这就是我如何获得Hibernate Session并创建查询。
HSession.getSession().createQuery("query here").executeUpdate();
AND
Critaria cr=HSession.getSession().createCritaria(..).. ;
HSession是我的会话工厂所在的位置,getSession()
方法返回一个新会话
(getSessionFactory().openSession();)
我想知道是否
cr.list();
后会话还活着吗? 创建会话
Session s = HSession.getSession();
s.createCriteria ...
使用会话的方法是使用s.close();
关闭它吗?
答案 0 :(得分:8)
是的,会话将一直存在,直到您关闭它。您可以针对会话执行多个操作,但只有close()
才会关闭它。
在您的情况下,会话似乎由HSession
控制。您需要查看它以查看是否执行了任何事务,如何管理会话等等。
答案 1 :(得分:5)
我今天读到了这个......它说“第一次调用getCurrentSession()时会打开一个会话,而当事务结束时会关闭会话。”
所以根据这个:如果你有一个交易缠绕它(你应该猜我)并调用transaction.commit()...会话关闭。
在你的情况下它应该仍然是开放的。
如果我错了,请纠正我......! :)