Spring事务处理

​事务处理,事务隔离​

​@Transactional​​事务处理

Spring事务传播行为

  • 事务传播行为 指的是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行.
  • 例如,方法A事务方法调用方法B事务方法时.方法B是继续调用者方法A的事务中运行,还是为自己开启一个新的事务运行,这就是由方法B的事务传播行为决定的

Spring事务的传播行为

事务隔离级别—mysql

传播行为 属于 Spring 中A方法调用B方法


## `PROPAGATION`

​required​​: 必须的

​Supports​​…支持的

​mandatory​​ …强制的

​REQUIRES_NEW​​…需要新的

​supported​​:支持

​Never​​从不

1.REQUIRED–默认传播行为 如果存在一个事务,则支持当前事务,如果没有事务则开启一个新的事务

如果当前的线程存在事务,则加入到当前线程的事务,如果当前线程没有事务则从新的创建一个新的事务

2 Supports 如果存在一个事物,支持当前事务,如果没有事务,则非事务的执行,.

当前线程中如果存在事务,则加入该线程事务执行,如果该线程没有存在事务则以非事务的形式执行

3.MANDATORY 如果已经存在一个事务,支持当前事务,如果没有一个活动的事务,则抛出异常

如果当前线程中存在一个事务,当我们A 调用B 的方法的时候 B 不回抛出异常

如果当前线程中不存在事务,直接访问B方法 就会抛出异常

4.REQUIRES_NEW 总是开启一个新的事务,如果一个事务已经存在,则将这个存在的事务挂起

当A调用B方法的时候, A已经创建了一个事务,进入到B方法的时候,则会创建一个新的事务为事务B

5.NOT_SUPPORTED 总是非实物的执行,并挂起任何存在的事务

当前线程不管是否存在事务,则以非事务的形式执行

6.NEVER 总是非事务的执行,如果存在一个活动事务,则抛出异常

通俗易懂方式:

A调用B方法:

B方法上REQUIRED

  1. 方法A调用B
  2. 直接方法B方法

如果直接访问B方法的话,就会创建一个新的事务

如果方法A调用B方法,则B会加入到当前A的事务