关于事务的合并 Spring事务管理
Spring事务类型详解:
PROPAGATION_REQUIRED--支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
PROPAGATION_SUPPORTS--支持当前事务,如果当前没有事务,就以非事务方式执行。
PROPAGATION_MANDATORY--支持当前事务,如果当前没有事务,就抛出异常。
PROPAGATION_REQUIRES_NEW--新建事务,如果当前存在事务,把当前事务挂起。
PROPAGATION_NOT_SUPPORTED--以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER--以非事务方式执行,如果当前存在事务,则抛出异常。
PROPAGATION_NESTED--如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则进行与PROPAGATION_REQUIRED类似的操作。
编程式事务:即采用注解的方式
当事务传播特性为PROPAGATION_REQUIRED(大部分项目默认配置)时,业务组合调用时,在其组合方法也添加PROPAGATION_REQUIRED传播特性
子业务方法会使用上级方法的事务,若某发生异常,会Rollback.
1 @Transactional(propagation=Propagation.REQUIRED, rollbackFor = Throwable.class) 2 public void insertA(){ 3 jdbcTempalte.update("insert into a(name) values('a')"); 4 } 5 @Transactional(propagation=Propagation.REQUIRED, rollbackFor = Throwable.class) 6 public void insertB(){ 7 jdbcTempalte.update("insert into b(name) values('b')"); 8 } 9 @Transactional(propagation=Propagation.REQUIRED, rollbackFor = Throwable.class) 10 public void insertAB() throws Exception{ 11 insertA(); 12 if(1==1){//发生异常时,insertA()所做操作回滚! 13 throw new Exception(" occur exception defined by user!"); 14 } 15 insertB(); 16 }

浙公网安备 33010602011771号