@Transaction 注解

@Transaction注解失效的场景

一 @Transaction 应用在非 public 修饰的方法上面
当修饰 protected ,private 的方法时 虽然不会报错,但是注释会直接失效
二 当异常类型为非 unchecked @Transaction注解 不会回滚, Spring默认抛出了未检查unchecked异常(继承自 RuntimeException 的异常)或者 Error才回滚事务;其他异常不会触发回滚事务,如果是 checked 类型异常 我们要求回滚 那么就需要指定 rollbackFor 属性

@Transactional(rollbackFor = Exception.class)

三 : @Transactional 注解属性 propagation 设置错误
TransactionDefinition.PROPAGATION_SUPPORTS:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式继续运行。

TransactionDefinition.PROPAGATION_NOT_SUPPORTED:以非事务方式运行,如果当前存在事务,则把当前事务挂起。

TransactionDefinition.PROPAGATION_NEVER:以非事务方式运行,如果当前存在事务,则抛出异常。
四:同一个类中的方法调用,比如: a 没有开启事务,b开启了事务。a方法调用了b方法,那么b 方法的@Transaction 也不会生效
五: 数据库引擎不支持事务引擎,会导致不能回滚
六: 异常被catch了;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值