|
|
|
| 您的位置:首页>>Hibernate>>开源技术:hibernate点滴 |
|
|
开源技术:hibernate点滴
|
| 2007-04-17 来源:www.javaresearch.org 作者:未知 |
这几天在学习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()进行查询。 |
|
|
|