【Spring事务的介绍2——事务的传播机制】

Spring事务的传播特性

什么是事务的传播特性?

事务的传播特性就是当一个事务方法被另外一个事务的方法调用时,这个事务该怎么处理!

Spring总共给出了7中事务的隔离级别:

可以分为三种类型 不要事物的 、 可有可无的 、 必须有事务的

不要事物的:

1.PROPAGATION_NEVER: 没有就非事务执行,如果有事务就抛异常

2.PROPAGATION_NOT_SUPPORTED: 没有就非事务执行,有就直接见事务挂起,然后非事务执行


可有可无的

3.PROPAGATION_SUPPORTED: 有事务就加入当前事务,没事务就非事物执行


必须有事务的

4.PROPAGATION_REQUIRES_NEW: 不管有没有事务都会创建一个新的事务。如果有就将原来的事务挂起,使用自己的事务。

5.PROPAGATION_NESTED: 不管有没有事务都会创建一个新的事务,如果有事务,就在当前事务中嵌套一个新的事物

6.PROPAGATION_REQUIRED: 默认事务类型,如果没有就新建一个事务;如果有,就加入当前事务。(大多数情况都是用这种)

7.PROPAGATION_MANDATORY: 如果没有事务就报错,如果有事务就加入当前事务。


注意:在这7种事物隔离级别中存在一些将原事物挂起的类型,如果使用的是将原事物挂起的隔离级别会出现的问题

假设A方法有事务对user表的一条数据进行操作,操作完过后调用B方法。
B方法也有事务,B方法的逻辑和A方法的一样对user表操作同一条数据,假设事务的隔离类型是 NOT_SUPPORTED:就会出现死锁的情况。
因为A方法调用B方法的时候 B方法把A方法的事物挂起。导致user表锁起来了。所以B方法对user表就操作不了,所以产生死锁

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值