hibernate 解决Service 的事务管理

在事务的管理中有两种方式

  1. 在业务层获取Session ,并将Session作为参数传递给Dao
  2. 可以使用ThreadLocal 业务层获取的Session 绑定到当前线程中,然后Dao中获取Session时,取当前线程

Hibernate帮我们做完了第二种方法,
需要我们做一点配置
在hibernate核心配置中配置如下:

<!--绑定session到本地线程-->
<property name="hibernate.current_session_context_class">thread</property>

由于hibernate5给session提供了三种管理方法 所以值也有三种

  • thread:session 对象的生命周期和本地线程绑定
  • jta: session 对象的生命周期与jta事务绑定 – 跨数据库操作
  • managed:hibernate 委托程序管理session的生命周期

我们拿session时就要使用 使用getCurrentSession()方法
自动关闭不用关闭。
这样的话 就可以保证我们的session是同一个;

猜你喜欢

转载自blog.csdn.net/qq_40435621/article/details/87899432