事务:为了达到某个目的而做的一系列操作,要么一起成功(事务提交),要么一起失败(事务回滚)。
传播特性
PROPAGATION_REQUEIRES_NEW:肯定会创建子事务,父子互不影响;
PROPAGATION_NESTED:肯定会创建子事务,父影响子,子不影响父;
PROPAGATION_REQUEIRED:子事务和父事务合并成一个事务,父子互相影响;
如果想实现:子影响父,但父不影响子的效果,我觉得可以把传播级别设置 PROPAGATION_REQUEIRES_NEW,然后在父中捕获子的异常,然后再抛出异常来实现。
| 事务传播行为类型 | 说明 |
|---|---|
| PROPAGATION_REQUIRED | 如果当前没有事务,就新建一个事务,如果已经存在一个事务中,加入到这个事务中。这是最常见的选择,也是默认行为。 |
| PROPAGATION_SUPPORTS | 支持当前事务,如果当前没有事务,就以非事务方式执行,如果当前有事务就加入到事务中。 |
| PROPAGATION_MANDATORY | 如果当前有事务就加入到事务中,如果当前没有事务,就抛出异常。 |
| PROPAGATION_REQUIRES_NEW | 新建事务,如果当前存在事务,把当前事务挂起,两个事务之间互不影响。 |
| PROPAGATION_NOT_SUPPORTED | 以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。 |
| PROPAGATION_NEVER | 以非事务方式执行,如果当前存在事务,则抛出异常。 |
| PROPAGATION_NESTED | 如果当前有事务,就新建一个事务,如果有就在当前事务中嵌套一个事务,两个事务会相互影响,一个事务回滚,另外一个事务也会回滚。 |
隔离级别
isolation,一般都是默认的,数据库是什么级别就用什么
