Spring声明式事务管理 (一)介绍
事务概念:
事务是一组最小逻辑执行单元,组成这个单元的每一个操作,要么同时执行成功,有一个执行失败就全部失败。
有四大特性:原子性,一致性,隔离性,持久性
Spring声明式事务控制
-
Spring已经提供了事务管理、事务控制的具体实现,我们只需要按照规则使用即可。
-
如果要用Spring声明式事务,需要引入spring-tx包, spring-jdbc包。
-
Spring声明式事务, 原理: Aop
对符合切入点表达式的类,执行方法时候,可以动态织入切面类的事务控制代码。
Spring声明式事务管理 (二)Api
|-- PlatformTransactionManager Spring事务控制的顶层接口
定义了提交事务、回滚事务的方法。
|-- TransactionStatus 事务的状态
|-- TransactionDefinition 事务定义(可以指定事务只读状态、传播行为、隔离级别等。)
传播行为作用: 控制事务的边界。简单来说,就是如何控制事务。
- 默认值。
- 如果一个方法指定事务的传播行为为REQUIRED, 表示当前运行方法必须有事务环境。
- 如果当前执行方法没有事务,则新建一个事务,把当前方法加入事务中。
- 如果当前执行的方法有事务,则直接加入当前事务,就不新建新的事务。
- 应用: 增删改
SUPPORTS
- 当前执行方法对事务的要求是: 可有可无。
- 有事务环境可以运行,没有事务环境也可以。
- 应用: 查询
REQUIRES_NEW
-
如果一个方法指定事务的传播行为为REQUIRES_NEW, 表示当前运行方法必须有事务环境。
-
不管当前方法是否有事务环境,都会新建一个新的事务。
|-- DataSourceTransactionManager 实现类,基于连接池的事务控制
spring对不同的技术提供了不同的事务控制实现:
HibernateTransactionManager、
JpaTransactionManager