我正在使用 Spring 3.x和Hibernate注释编程的企业应用程序。我正在使用hibernate Session
对象在我的XYZDaoImpl
类中执行db操作
我怀疑是“在执行任何CRUD操作后,每次关闭Hibernate Session
对象是否正确?”
如果不是正确的方法,请告诉我打开/关闭hibernate Session
对象的推荐方法。
答案 0 :(得分:1)
你能发一点daoImpl代码......
如果使用sessionFactory.getCurrentSession()
,您将获得当前会话。在这种情况下,框架会在事务结束时自动刷新并关闭(提交或回滚)。
如果您使用sessionFactory.openSession()
,则必须自行管理会话并刷新并关闭它,然后手动"。
答案 1 :(得分:1)
不,当使用带弹簧的休眠时,你不应该(手动)打开或关闭会话,但让spring管理你的休眠会话。 Spring将会话作为事务资源进行管理,因此您必须正确配置事务管理。
如果手动打开/关闭hibernate会话,则很难使用这两个框架之间的集成:会话管理是集成的主要特征。
在spring上下文中打开/关闭hibernate会话的唯一原因是使用相同的会话来跨越多个事务。