开源技术:hibernate点滴

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

这几天在学习hibernate,把一些碰到的问题给写下来,以后避免犯重复的问题:

1,在进行Query类操作的时候session需在最后关闭;

例如:

try {

Query query = session.createQuery(sql);

list = query.list();

tx.commit();

} catch (HibernateException e) {

e.printStackTrace();

}

。。对list操作的一些代码。。

session.close();

经常看到网上会这样写:

try {

Query query = session.createQuery(sql);

list = query.list();

tx.commit();

session.close()

} catch (HibernateException e) {

e.printStackTrace();

}

结果他没有对list进行过多的操作,可能是我理解的角度有问题,然后我也用了网上的例子,然后对list进行操作,结果在对list进行操作的时候会忽然中断掉,原来是session的问题,只要把session.close()放到list操作代码后面,就不会出现中断的问题。

2.几个高度概括的操作:

public boolean update(Object o){

try{

session.update(o);

tx.commit();

session.close();

}catch(HibernateException e){

e.printStackTrace();

return false;

}

return true;

}

public boolean delete(Object o){

try{

session.delete(o);

tx.commit();

session.close();

}catch(HibernateException e){

e.printStackTrace();

return false;

}

return true;

}

直接对session进行操作,可能会产生问题。。目前还没有学习事务处理,先搁着吧。

3,一对一关联操作:

一对一关系有两种形式,一种是共享主键方式,另一种是惟一外键方式,最常用的我想应该是唯一外键方式了吧

简单例子,

表一 employee(id,name,deptId)(deptId是外键)

表二 dept(id,name)

我们需要对employee对应的hbm文件进行修改:

把原来的

<property name="deptId" column="deptId" />

改成

<many-to-one name="dept" class="hib.bo.Dept" column="deptId" unique="true"/>

然后在po里面也要进行修改:

把deptId属性改成dept对象,这样就可以了。

然后假如要查询员工号为1的部门名称,那么我们就可以通过employee.getDept().getName()进行查询,

如下是查询所有的员工信息:

sql = "from Employee employee";

try {

Query query = session.createQuery(sql);

list = query.list();

tx.commit();

} catch (HibernateException e) {

e.printStackTrace();

}

假如要查询相对应的员工号的员工,那么我们可以通过employee.getDept().getName()进行查询。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航