事务的传播特性

2020-07-27  本文已影响0人  砒霜拌辣椒

在一些业务场景中,会涉及到多张表的操作,也就是说会有多个事务存在,如何管理这些事务,就是会利用到spring中的事务传播特性。

Propagation 传播特性
REQUIRED 有事务则参与事务,没有事务则创建事务
REQUIRES_NEW 不管有没有事务,总是创建新事务,两个事务保持独立
MANDATORY 有事务则参与事务,没有事务则报错
NEVER 必须按非事务方式执行,有事务则报错
NESTED 有事务则嵌套事务,没有事务则创建事务
NOT_SUPPORTED 无论有无事务总是按照非事务方式执行
SUPPORTS 有事务则参与事务,没有事务则按非事务方式执行

说明

  1. 嵌套事务比如A事务嵌套了B事务,B会随着A回滚事务,但A不会随着B回滚事务。
  2. 利用了Spring的面向切面特性(动态代理),需要跨业务类调用才会使@Transactional注解生效。
  3. REQUIRES_NEWNOT_SUPPORTED会挂起当前事务,使用时注意死锁。
  4. 事务的传播特性需要在同一个数据源(事务管理器)下才生效。
上一篇 下一篇

猜你喜欢

热点阅读