当我应该关闭会话时,是从Tapestry中的HibernateSessionManager
获得的吗?
一段代码。考虑一些处理HibernateSessionManager
对象的方法:
public void foo(final HibernateSessionManager hsm) {
Session session = hsm.getSession();
第一种情况:会话仅用于从数据库中获取数据:
session.createQuery("from SomeTable ... blablabla").list();
我必须手动关闭
session
(session.close();
)吗?第二种情况:会话也用于保存/更新结果:
session.saveOrUpdate(obj);
在
commit
对象:hsm
上仅hsm.commit();
就足够了吗,还是我也应该做session.close();
? 最佳答案
我已经回答了here。
要回答其他部分,您不必担心关闭会话,因为只要您使用HibernateSessionManager
,它就可以通过Tapestry-Hibernate关闭。
try {
do_stuff(hibernateSessionManager.getSession());
hibernateSessionManager.commit();
}catch(Exception ex){
hibernateSessionManager.abort();
}