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是同一个;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值