打开和关闭Hibernate会话

时间:2011-11-17 09:20:14

标签: java hibernate

这就是我如何获得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();关闭它吗?

2 个答案:

答案 0 :(得分:8)

是的,会话将一直存在,直到您关闭它。您可以针对会话执行多个操作,但只有close()才会关闭它。

在您的情况下,会话似乎由HSession控制。您需要查看它以查看是否执行了任何事务,如何管理会话等等。

答案 1 :(得分:5)

我今天读到了这个......它说“第一次调用getCurrentSession()时会打开一个会话,而当事务结束时会关闭会话。” 所以根据这个:如果你有一个交易缠绕它(你应该猜我)并调用transaction.commit()...会话关闭。
在你的情况下它应该仍然是开放的。

如果我错了,请纠正我......! :)