Spring事务传播特性及隔离级别

概念:当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行
例:批量转账,给10个人,最后一个人转账出了问题,是全部回滚还是只回滚最后一个人的
代码演示

public void A(){
	sout("A方法执行了");
	B();
}
public void B(){
	sout("B方法执行了");
}

必须有事务

  • required如果当前没有事物就创建一个事物,如果当前有事物就加入该事物
    A调用B,AB共用一个事务
  • mandatory支持当前事物,如果当前存在事物就加入该事物,否则就抛出异常
    A调用B,A必须有事务,否则报异常
  • requires-new 无论当前有没有事物,都重新创建一个新事物
    A调用B,运行到B时,将A的事务挂起,B自己的事务运行后,A事务继续,B事务不影响A事务
  • nested 如果当前存在事物,则在嵌套事物内执行,如果当前没有事物,就创建一个新事物
    A调用B,B事务会影响A事务

可有可无的

  • supports 支持当前事物,如果当前存在事物就加入该事物,否则就以非事物的方式执行
    A调用B,如果A没有事务,就无事务运行,A有事务,就加入A的事务

死活不能有事务

  • not-supported 如果当前有事物就挂起是否,否则以非实物的方式执行
    A调用B,A有事务,执行到B的时候会将此事务挂起,B执行后,此事务继续
  • never 如果当前存在事物 就抛出异常,否则就以非事物的方式执行
    A调用B,如果A没有事务,就正常运行,A有事务,就会抛出异常

隔离级别

• Read uncommitted(读未提交) ------会导致脏读

• Read Committed(读已提交) ------会导致不可重复读

• Repeatable Reads(可重复读)默认------在开始读取数据(事务开启)时,不再允许修改数据,如果添加数据,则不可避免,会导致幻读

• Serializable(串行化)------将整张表锁起来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值