Spring事务管理

概述

事务管理:4大隔离级别+7大传播性+ReadOnly配置

  1. 4大隔离级别没啥好说的,和Mysql的事务级别一样:RU、RC、RR、序列化,默认隔离级别和数据库的一样

  2. 7大传播性:

  • PROPAGATION_REQUIRED:有就加入,没有就新建(默认)
  • PROPAGATION_SUPPORTS:有就加入,没有就非事务
  • PROPAGATION_NOT_SUPPORTED:有就挂起,非事务方式执行
  • PROPAGATION_REQUIRES_NEW :独立新建
  • PROPAGATION_MANDATORY:上下文必须要有事务
  • PROPAGATION_NEVER:上下文必须没有事务
  • PROPAGATION_NESTED : 嵌套事务 ,引入savepoint,子事务回滚并不会导致父事务回滚,父事务回滚,则整个事务回滚。
    比如一个大的下载任务,子任务如果尝试 电信网络下载失败,并不会导致整个下载失败,会尝试 联通网络下载某资源,所有子任务都下载完成,整个下载事务就提交。但是如果大的下载任务回滚的话,所有的子任务都会回滚
ServiceA {  
  //事务属性配置为 PROPAGATION_REQUIRED 
    void methodA() {  
        try {  
            ServiceB.methodB();  
        } catch (SomeException) {  
            // 执行其他业务, 如 ServiceC.methodC();  
        }  
    }  
  
}

ServiceB {  
    // 事务属性配置为 PROPAGATION_NESTED 
    void methodB() {  
    }  } 
  1. 设置readOnly属性,可以防止在读取的方法里面,误执行提交的方法,同时可以防止SQL注入
  2. 事务的回滚也要看Exception的级别,并不是所有的异常都会回滚,可以配置

你可能感兴趣的:(Spring事务管理)