Spring 中@transactional 的使用

Spring 事务管理分为编程式和声明式的两种方式。编程式事务指的是通过编码方式实现事务;声明式事务基于 AOP,将具体业务逻辑与事务处理解耦。声明式事务管理使业务代码逻辑不受污染, 因此在实际使用中声明式事务用的比较多。声明式事务有两种方式,一种是在配置文件(xml)中做相关的事务规则声明,另一种是基于 @Transactional 注解的方式。

使用Spring的 @Transactional来设置事务时,需要注意:

  1. 注解添加在public方法上才有效
  2. 默认配置下 Spring 只会回滚运行时、未检查异常(继承自 RuntimeException 的异常)或者 Error,如果希望抛出其他异常时也回滚,可通过rollback-for 项设置
  3. 当被注解了 @Transactional的方法被同一个类中的其他方法调用,事务不会生效,只有被另一个类调用才生效。如果想打破这种方式,除非使用AspectJ代替Spring 的AOP。
  4. 如果希望事务中的某个方法即使事务异常时,也不回滚,可通过设置事务的propagation来实现。
  5. mysql默认的事务隔离级别为可重复读,oracle为读已提交。

参考资料:

  1. Spring Boot 中使用 @Transactional 注解配置事务管理
  2. 透彻的掌握 Spring 中@transactional 的使用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值