使用平台事务管理器:PlatformTransactionManager 是个接口
其中两个实现类:
- DataSourceTransactionManager:底层使用JDBC管理事务
- HibernateTransactionManager:底层使用Hibernate管理事务
TransactionDefintion:事务定义信息
- 事务定义:用于定义事务相关的信息,隔离级别,超时信息,传播行为,是否只读
transactionStatus:事务的状态
- 事务状态:用于记录在事务管理过程中,事务的状态的对象
spring进行事务管理的时候,首先平台事务管理器根据事务定义信息进行事务的管理,在事务管理过程中,产生了各种状态,将这些状态保存到事务状态的对象中;三个对象的协作
spring事务的传播行为:提供七种传播行为,解决业务层方法的相互调用的问题!
- 保证多个操作在同一个事务
- propagation——require:默认值,代表如果A方法中有事务,使用A中的事务,没有,就创建一个新的事务,保证同一个事务中;
- propagation——support:支持事务,如果A中有事务,使用A中的事务,如果没有事务,不使用事务。
- propagation——Mandatory:不支持事务,如果A中有事务,使用A中的事务,没有就抛出异常;
- 保证多个操作不在同一个事务中
创建事务,包含自身操作
- propagation——requires_new:如果A中有事务,将A的事务挂起(暂停),创建新事物,只包含自身操作,如果没有,
- propagation——not_support:如果A中有事务,将A的事务挂起,不使用事务管理。
- propagation——never:如果A中有事务,抛出异常
- 嵌套事务
- propagation——nested:如果A中有事务,按照A的事务执行,执行完成后,设置保存点,执行B中的操作,如果没有异常,执行通过,如果有异常,可以选择到回滚最初位置,也可以回滚到保存点!