Spring事务

本文详细介绍了Spring事务管理的传播机制,包括REQUIRED、NOT_SUPPORTED、REQUIRES_NEW、MANDATORY、NEVER、SUPPORTS和NESTED等不同级别,并通过实例说明了它们在事务回滚情况下的行为。理解这些机制对于优化事务处理和控制代码的事务边界至关重要。
摘要由CSDN通过智能技术生成

首先:

Spring的事务,也就是数据库的事务操作,符合ACID标准,也具有标准的事务隔离级别。

但是Spring事务有自己的特点,也就是事务传播机制。

所谓事务传播机制,也就是在事务在多个方法的调用中是如何传递的,是重新创建事务还是使用父方法的事务?父方法的回滚对子方法的事务是否有影响?这些都是可以通过事务传播机制来决定的。简单来说就是回滚机制。

1.REQUIRED (必须的)

如果有事务则加入事务,如果没有事务,则创建一个新的(默认值)

2.NOT_SUPPORTED(不支持)

Spring不为当前方法开启事务,相当于没有事务

3.REQUIRES_NEW(需要新的事务)

不管是否存在事务,都创建一个新的事务,原来的方法挂起,新的方法执行完毕后,继续执行老的事务

4.MANDATORY(强制性的)

必须在一个已有的事务中执行,否则报错

5.NEVER(从不)

必须在一个没有的事务中执行,否则报错

6.SUPPORTS(支架)

如果其他bean调用这个方法时,其他bean声明了事务,则就用这个事务,如果没有声明事务,那就不用事务

7NESTED(嵌套的)

如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与REQUIRED类似的操作

required是必须的没有事务则创建事务

以上就是所有事务

注意事项

前提:保存方法中调用删除方法

    1)REQUIRED

        当两个方法的传播机制都是REQUIRED时,如果一旦发生回滚,两个方法都会回滚

    2)REQUIRES_NEW

        当删除方法传播机制为REQUIRES_NEW,会开启一个新的事务,并单独提交方法,所以保存方法的回滚并不影响delete方法事务提交

    3)NESTED

        当保存方法为REQUIRED,删除方法为NESTED时,删除方法开启一个嵌套事务;

        当保存方法回滚时,删除方法也会回滚;反之,如果删除方法回滚,则并不影响保存方法的提交
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值