Spring中七种事务传播行为
Spring事务传播级别 | 外层有事务 | 外层无事务 |
REQUIRED(默认) | 加入事务 | 创建事务 |
REQUIRED_NEW | 挂起,创建子事务 | 创建事务 |
SUPPORTS | 加入事务 | 非事务运行 |
NOT_SUPPORTED | 挂起,非事务运行 | 非事务运行 |
MANDATORY | 加入事务 | 抛出异常 |
NESTED | 嵌套事务 | 创建事务 |
NEVER | 抛出异常 | 非事务运行 |
事务的分类
事务 | 父事务回滚 | 子事务回滚 |
挂起事务 | 子事务不影响 | 父事务回滚 |
嵌套事务 | 子事务回滚 | 父事务不影响 |
普通事务 | 子事务回滚 | 父事务回滚 |
无事务 | 直接执行SQL,不会回滚 |
注意
被事务管理的方法抛出异常,才会使得事务回滚,没有被事务管理的方法抛出异常被try-catch捕获,外层的事务是不会回滚的