HibernateSessionManager

HibernateSessionManager

当我应该关闭会话时,是从Tapestry中的HibernateSessionManager获得的吗?

一段代码。考虑一些处理HibernateSessionManager对象的方法:

public void foo(final HibernateSessionManager hsm) {
    Session session = hsm.getSession();




第一种情况:会话仅用于从数据库中获取数据:

session.createQuery("from SomeTable ... blablabla").list();


我必须手动关闭sessionsession.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();
}

09-04 08:43