事务传播类型
事务传播类型 | 原事务存在 | 原事务不存在 |
---|---|---|
REQUIRED | 加入 | 新开启 |
SUPPORTS | 加入 | 非事务运行 |
MANDATORY | 加入 | 抛出异常 |
REQUIRES_NEW | 新开启事务(与原事务无关,原事务回滚不影响新开启事务) | 同左 |
NOT_SUPPORTED | 非事务运行 | 同左 |
NEVER | 抛出异常 | 非事务运行 |
NESTED | 新开启子事务(父事务回滚,子事务也会滚) | 新开启 |
事务失效场景
问题层面 | 原因 |
---|---|
数据库引擎 | MyIASM不支持事务 |
未生成代理 | 没有被spring管理 |
非public方法 | |
@Transactional写在接口上,但使用基于类的代理 | |
未调用代理 | 自身调用(AOP无效) |
异常处理问题 | 异常被捕获,未抛出 |
抛出的异常类型不匹配 | |
事务传播机制 | Propagation.NOT_SUPPORTED |