是否应该在执行任何CRUD操作后每次关闭Hibernate Session对象?

时间:2014-10-08 13:04:54

标签: spring

我正在使用 Spring 3.x和Hibernate注释编程的企业应用程序。我正在使用hibernate Session对象在我的XYZDaoImpl类中执行db操作

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

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

2 个答案:

答案 0 :(得分:1)

你能发一点daoImpl代码......

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

如果您使用sessionFactory.openSession(),则必须自行管理会话并刷新并关闭它,然后手动"。

答案 1 :(得分:1)

不,当使用带弹簧的休眠时,你不应该(手动)打开或关闭会话,但让spring管理你的休眠会话。 Spring将会话作为事务资源进行管理,因此您必须正确配置事务管理。

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

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