开源技术—hibernate点滴

文章作者 100test 发表时间 2007:04:06 22:07:01
来源 100Test.Com百考试题网


这几天在学习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 0update(Object o){
try{
session.0update(o).
tx.commit().
session.close().
}catch(HibernateException e){
e.printStackTrace().
return false.
}
return true.
}

public boolean 0delete(Object o){
try{
session.0delete(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文件进行修改:
把原来的

改成

然后在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()进行查询。

相关文章


基于NetBeans比较JavaEE5平台和J2EE1.4
HIbernate的参数使用说明
Hibernate编写通用数据库操作代码
开源技术—hiernate的锁机制
开源技术—hibernate点滴
使用hibernate实现树形结构无限级分类
Hibernate的继承关系
了解Hibernate的FlushMode.NEVER模式
在Hibernate中配置Proxool连接池
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛