事务传播行为介绍
Spring中的7个事务传播行为:
事务行为 | 说明 | 特点 |
---|---|---|
PROPAGATION_REQUIRED | 支持当前事务,假设当前没有事务。就新建一个事务 | 父事务与子事务要么都成功,要么都失败 |
PROPAGATION_SUPPORTS | 支持当前事务,假设当前没有事务,就以非事务方式运行 | |
PROPAGATION_MANDATORY | 支持当前事务,假设当前没有事务,就抛出异常 | |
PROPAGATION_REQUIRES_NEW | 新建事务,假设当前存在事务。把当前事务挂起 | 子事务可以单独提交,提交后,父事务的异常不影响子事务。如果子事务抛异常被父事务catch了,也不影响父事务 |
PROPAGATION_NOT_SUPPORTED | 以非事务方式运行操作。假设当前存在事务,就把当前事务挂起 | |
PROPAGATION_NEVER | 以非事务方式运行,假设当前存在事务,则抛出异常 | |
PROPAGATION_NESTED | 如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与PROPAGATION_REQUIRED类似的操作。 | 子事务不能单独提交,子事务的提交依赖于外层事务,但是可以独立回滚,父事务回滚,子事务也会回滚。如果子事务抛异常被父事务catch了,也不影响父事务 |
|