打开和关闭Hibernate会话

Déb*_*ora 6 java hibernate

这就是我如何获得Hibernate Session并创建查询.

HSession.getSession().createQuery("query here").executeUpdate();
Run Code Online (Sandbox Code Playgroud)

Critaria cr=HSession.getSession().createCritaria(..).. ;
Run Code Online (Sandbox Code Playgroud)

HSession是我的Session工厂所在的位置,getSession()方法返回一个新会话

(getSessionFactory().openSession();)
Run Code Online (Sandbox Code Playgroud)

我想知道是否

  • 在呼叫之后cr.list();会话还活着吗?
  • 如果活着,获得此标准或执行查询方式并不好?和
  • 创建会话为

    Session s = HSession.getSession();
    s.createCriteria ...

    是使用会话并使用它关闭它的方法s.close();吗?

ska*_*man 8

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

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


gil*_*ras 5

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

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