在Hibernate中关闭会话连接

时间:2017-05-16 12:37:34

标签: java hibernate session hql hibernate-criteria

这是我的HQL:

Criteria criteria = sessionFactory.getCurrentSession().createCriteria(myclass.class, "b");
ProjectionList properties = Projections.projectionList();
listArr = criteria.setResultTransformer(Transformers.aliasToBean(HashMap.class)).list();

我想在执行查询后关闭会话连接。

1 个答案:

答案 0 :(得分:2)

您正在使用sessionFactory.getCurrentSession(),因此您无需刷新和关闭会话。它在事务结束时自动刷新并关闭。

更多

<强>的getCurrentSession

当您调用SessionFactory时。 getCurrentSession,它将为您提供在hibernate上下文中并由内部hibernate管理的会话对象。它与事务范围有关。 当你调用SessionFactory时。 getCurrentSession,如果不存在则创建一个新的Session,否则使用当前hibernate上下文中的相同会话。

<强>的openSession

当您调用SessionFactory.openSession时,它总是重新创建新的Session对象并将其提供给您。您需要显式刷新和关闭这些会话对象。由于会话对象不是线程安全的,因此您需要在多线程环境中为每个请求创建一个会话对象,并在Web应用程序中为每个请求创建一个会话。

如果在单线程环境中使用hibernate,可以使用getCurrentSession