spring 中 isolation 和 propagation 详解

spring里面事务的传播属性和事务隔离级别。

Propagation:事务的传播属性

7、PROPAGATION_NESTED

一个事务是和父事务相依的,这个事务是和父事务一起提交的。如果回滚,则可使用savepoint还原点,如果父事务回滚到还原点,这个事务也要回滚到还原点,但是这个事务是可以再还原点之后想办法执行其他的事务来实现自己的业务逻辑。

6、PROPAGATION_NEVER

不在事务中运行。事务A的级别为PROPAGATION_REQUIRED,事务B的级别为PROPAGATION_NEVER将会抛出异常。

5、PROPAGATION_REQUIRED_NEW

事务A:PROPAGATION_REQUIRED_NEW

事务B:PROPAGATION_REQUIRED

如果事务A执行时,事务B挂起,A会执行一个新的事务,等待事务A完成后,再执行事务B。

如果执行过程中事务B挂起,则A不受影响。

4、PROPAGATION_REQUIRED

事务A和事务B均为REQUIRED,如果事务B运行在事务A的内部,则事务B不再建立新的事务,如果事务B执行时,事务A中没有,则事务B重新建立一个新的事务。如果其中有一个事务发生异常回滚,则另一个事务不论是否已经完成,均会被回滚。

3、PROPAGATION_SURPORTS

如果A在一个事务中则以事务的形式运行,如果不在一个事务中,则以非事务的形式运行。

2、PROPAGATION_NOT_SURPORTED

事务A:PROPAGATION_NOT_SURPORTED

事务B:PROPPAGATION_REQUIRED

如果事务B执行时,则事务B挂起,A以非事务的形式运行完,再执行事务B。

1、PROPAGATION_MANDATORY

只能在一个父事务中运行,只能被一个父事务调用,如果没有父事务,则会抛出异常。

Spring事务的隔离级别

1、ISOLACTION_DEFAULT  数据库的默认隔离级别

2、ISOLACTION_READ_UNCOMMITED 一个事务未提交,但已对数据库产生了操作,它允许另一个事务看到未提交的数据,容易产生脏数据、不可重复读、幻象读

3、ISOLACTION_READ_COMMITED 保证一个事务在该事务操作完成后,再读取该表数据,避免出现脏数据。

4、ISOLACTION_REPEATABLE_READ 可能出现数据的重复读取(幻象读),但不会出现脏数据、不可重复读。 

5、ISOLACTION_SERIALABLE 事务的执行顺序为顺序执行,避免出现脏数据、不可重复读、幻象读。



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值