这几天在学习hibernate
把一些碰到的问题给写下来
以后避免犯重复的问题
在进行Query类操作的时候session需在最后关闭
例如
try{
Queryquery=sessioncreateQuery(sql);
list=querylist();
mit();
}catch(HibernateExceptione){
eprintStackTrace();
}
对list操作的一些代码
sessionclose();
经常看到网上会这样写
try{
Queryquery=sessioncreateQuery(sql);
list=querylist();
mit();
sessionclose()
}catch(HibernateExceptione){
eprintStackTrace();
}
结果他没有对list进行过多的操作可能是我理解的角度有问题然后我也用了网上的例子然后对list进行操作结果在对list进行操作的时候会忽然中断掉原来是session的问题只要把sessionclose()放到list操作代码后面就不会出现中断的问题
几个高度概括的操作
publicbooleanupdate(Objecto){
try{
sessionupdate(o);
mit();
sessionclose();
}catch(HibernateExceptione){
eprintStackTrace();
returnfalse;
}
returntrue;
}
publicbooleandelete(Objecto){
try{
sessiondelete(o);
mit();
sessionclose();
}catch(HibernateExceptione){
eprintStackTrace();
returnfalse;
}
returntrue;
}
直接对session进行操作可能会产生问题目前还没有学习事务处理先搁着吧
一对一关联操作
一对一关系有两种形式一种是共享主键方式另一种是惟一外键方式最常用的我想应该是唯一外键方式了吧
简单例子
表一employee(idnamedeptId)(deptId是外键)
表二dept(idname)
我们需要对employee对应的hbm文件进行修改
把原来的
<propertyname=deptIdcolumn=deptId/>
改成
<manytoonename=deptclass=hibboDeptcolumn=deptIdunique=true/>
然后在po里面也要进行修改
把deptId属性改成dept对象这样就可以了
然后如果要查询员工号为的部门名称那么我们就可以通过employeegetDept()getName()进行查询
如下是查询所有的员工信息
sql=fromEmployeeemployee;
try{
Queryquery=sessioncreateQuery(sql);
list=querylist();
mit();
}catch(HibernateExceptione){
eprintStackTrace();
}
如果要查询相对应的员工号的员工那么我们可以通过employeegetDept()getName()进行查询