应该在每次执行任何CRUD操作后关闭Hibernate会话对象



我正在使用企业应用程序,该应用程序使用带有Hibernate注释编程的Spring 3.x。我正在使用Hibernate Session对象在我的XYZDaoImpl类中执行数据库操作。

我的疑问是"在执行任何CRUD操作后,每次关闭Hibernate Session对象是否正确?"

如果这不是正确的方式,请告诉我打开/关闭hibernate Session对象的推荐方式。

你能发布一个位daoImpl代码吗。。。。。。

如果您使用sessionFactory.getCurrentSession(),您将获得当前会话。。在这种情况下,当事务结束(提交或回滚)时,框架会自动刷新并关闭。

如果使用sessionFactory.openSession(),则必须自己管理会话,并"手动"刷新和关闭会话。

否,当将hibernate与spring一起使用时,您不应该(手动)打开或关闭会话,而是让spring为您管理hibernate会话。Spring将会话作为事务资源进行管理,因此必须正确配置事务管理。

如果手动打开/关闭hibernate会话,则很难使用这两个框架之间的集成:会话管理是集成的主要功能。

在spring上下文中打开/关闭hibernate会话的唯一原因是使用同一会话来跨越多个事务。