事务的ACID特性
原子性
(atomicity):
确保动作要么全部完成要么完全不起作用
一致性
(consistency):
数据和资源就处于一种满足业务规则的一致性状态中
隔离性
(isolation):
用户的操作不能混淆
持久性
(durability):
一旦事务完成
,
无论发生什么系统错误
,
它的结果都不应该受到影响
Spring 事务分类
编程式事务:需要编写代码控制事务在哪里开始,哪里提交,哪里回滚。
声明式事务:由
Spring
自动控制,事务在业务逻辑方法执行前开始,在业务逻辑方法正常结束后提交,在业务逻辑方法抛出异常时回滚
事务的传播行为
•
PROPAGATION_REQUIRED
:如果当前存在事务,则加入该事务;如果当前没有事务,则创建一个新的事务。
•
PROPAGATION_REQUIRES_NEW
:创建一个新的事务,如果当前存在事务,则把当前事务挂起。
•
PROPAGATION_SUPPORTS
:如果当前存在事务,则加入该事务;如果当前没有事务,则以非事务的方式继续运行。
•
PROPAGATION_NOT_SUPPORTED
:以非事务方式运行,如果当前存在事务,则把当前事务挂起。
•
PROPAGATION_NEVER
:以非事务方式运行,如果当前存在事务,则抛出异常。
•
PROPAGATION_MANDATORY
:如果当前存在事务,则加入该事务;如果当前没有事务,则抛出异常。
•
PROPAGATION_NESTED
:如果当前存在事务,则创建一个事务作为当前事务的嵌套事务来运行;如果当前没有事务,则该取值等价于
TransactionDefinition.PROPAGATION_REQUIRED <