技术总结

事务的隔离、传播、回滚

2020-03-03  本文已影响0人  陆阳226

springboot之事务的隔离与传播

事务的隔离

多个事务是并发的访问数据库,并发是必须的但会带来几个问题:

多个事务并行时,事务之间处理数据的互斥程度就是事务的隔离级别
spring使用注解@Transactional定义一个事务,使用isolation配置隔离级别
隔离级别等级:

@Transactional(isolation = Isolation.DEFAULT)

事务的传播

spring中事务就是使用@Transactional注解的方法,一般用在service层的方法上,方法A中调用方法B,这两个方法都是事务,在事务B执行时当前已存在了事务A,怎样处理这两个事务之间的关系就是事务的传播
spring中事务传播级别:

事务回滚机制

当事务方法发生异常时会回滚事务执行的数据,默认是 rollbackFor = runtimeException.class,发生运行时异常才回滚,可以更改需要匹配什么异常才回滚
注意在当前事务方法内catch了指定回滚的异常,不会发生回滚

传播与回滚

事务的传播中一个事务的回滚也会影响到另外一个事务:
PNOT_SUPPORTED NEVER不以事务执行,SUPPORTS MANDATORYREQUIRED表现一致

https://juejin.im/entry/5a8fe57e5188255de201062b 这篇文章对各种情况下异常的回滚做了详细的测试

上一篇下一篇

猜你喜欢

热点阅读