我正在使用企业应用程序,该应用程序使用带有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会话的唯一原因是使用同一会话来跨越多个事务。