说起事务,就不得不谈谈事务的四大特性:
事务是一系列的操作,由一条或多条sql语句组成。是不可分割的整体,是最小的操作单位。
事务的特性:ACID
原子性(Atomicity):
最小的执行单元。(要么全成功,有一条失败则回滚到最初状态)
一致性(Consistency):
事务完成时所用的数据从一种一致性状态变为另一种一致性状态,所用的变更必须是在事务中进行修改,确保数据的完整性。
隔离性(Isolation):
一个事务中的操作不能受其它事务的影响,多事务对数据的操作相互隔离,一个事务不能看到另一个事务 正在修改的数据。
持久性(Durability):
事务执行完毕后,对数据的修改应持久保存在磁盘中。
当我们调用一个基于Spring的service层的方法时,它将运行于spring管理的事务当中,spring通过事务的传播行为控制当前事务如何传播到被嵌套调用的目标服务接口方法中。事务传播是spring进行事务管理的重要概念,本文进行分析不同事务传播行为的表现形式。
事务的传播行为类型(7种):传播行为即在两个业务之间如何共享事务
PROPAGATION_REQUIRED required , 必须 【默认值】 |
支持当前事务,A如果有事务,B将使用该事务。 如果A没有事务,B将创建一个新的事务。 |
PROPAGATION_SUPPORTS supports ,支持 |
支持当前事务,A如果有事务,B将使用该事务。 如果A没有事务,B将以非事务执行。 |
PROPAGATION_MANDATORY mandatory ,强制 |
支持当前事务,A如果有事务,B将使用该事务。 如果A没有事务,B将抛异常。 |
PROPAGATION_REQUIRES_NEW requires_new ,必须新的 |
如果A有事务,将A的事务挂起,B创建一个新的事务 如果A没有事务,B创建一个新的事务 |
PROPAGATION_NOT_SUPPORTED not_supported ,不支持 |
如果A有事务,将A的事务挂起,B将以非事务执行 如果A没有事务,B将以非事务执行 |
PROPAGATION_NEVER never,从不 |
如果A有事务,B将抛异常 如果A没有事务,B将以非事务执行 |
PROPAGATION_NESTED nested ,嵌套 |
A和B底层采用保存点机制,形成嵌套事务。 |
来源:CSDN
作者:曰业而安
链接:https://blog.csdn.net/duan196_118/article/details/103798804