hibernate session管理
hibernate自身提供了三种管理session的方法
session对象的生命周期与本地线程绑定
session对象的生命周期与JTA事务绑定
hibernate委托程序管理session对象的生命周期
分别对应于hibernate配置文件中hibernate.current_session_context_class属性的三个值
- thread
- jta*
- managed
与线程绑定
在使用session时,使用sessionFactory.getCurrentSession()来获取当前线程的session
在用thread来进行管理时,进行事务的提交或回滚操作后,session就会关闭
1 | <property name="current_session_context_class">thread</property> |
注意:在与spring集成时,使用LocalSessionFactoryBean会自动的设置该配置,无需在配置文件中进行配置
1 | public LocalSessionFactoryBuilder(DataSource dataSource, ResourceLoader resourceLoader) { |