spring事务传播机制

来源:互联网 发布:打开淘宝客户端 编辑:程序博客网 时间:2024/05/23 15:49

spring中7种事务传播机制

1. REQUIRED
-必须有一个事务的支持。如果没有事务,则新创建一个,如果有父事务,则使用(fetch)父级事务
2. REQUIRES_NEW
-必定会创建一个事务。如果有父事务,则挂起(suspend)父事务,等子事务执行完毕,在恢复(resume)父事务
3. SUPPORTS
-可以有或者没有事务的支持。如果有父事务,则使用fetch父事务,没有父事务,也不会新建
4. NOT_SUPPORTED
-不支持事务。如果有父事务,则挂起(suspend)父事务,等该方法执行完毕,在恢复(resume)父事务
5. MANDATORY
-必须有一个事务的支持。类似required,不同之处就是它不会自己生成事务,而required会自己生成
6. NEVER
-不支持事务。与not_suppored类似,不同之处就是在有事务的情况下not_suppored会挂起正在执行的事务,而never会抛出异常
7. NESTED
-与requires_new类似。但是父事务出现异常的时候,子事务也会回滚。


异常处理:
说明:有两个业务类的方法add()、delete(),add()调用delete(),且这两个方法都不做异常捕捉处理;
-add()和delete()都有事务时,且delete()是fetch的是add()的事务(同一个事务),那异常不管是出现在add()还是delete()方法,事务都会回滚。
-add()和delete()都有事务时,且delete()的事务与add()的事务不是用一个事务,那异常出现在delete()里面,全部回滚,如果异常出现在add()里面,则和delete()没有关系。