spring-tx
1.概述
通过统一的方式定义了事务的管理,只需实现transtionManager就可以通过注解,配置bean和aop的方式来完成事务的调用。
2.事务的机制
传播机制
propagation_requierd:如果当前没有事务,就新建一个事务,如果已存在一个事务中,加入到这个事务中,这是最常见的选择。
propagation_supports:支持当前事务,如果没有当前事务,就以非事务方法执行。
propagation_mandatory:使用当前事务,如果没有当前事务,就抛出异常。
propagation_required_new:新建事务,如果当前存在事务,把当前事务挂起。
propagation_not_supported:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
propagation_never:以非事务方式执行操作,如果当前事务存在则抛出异常。
propagation_nested:如果当前存在事务,则在嵌套事务内执行。如果当前没有事务,则执行与propagation_required类似的操作
隔离机制
读未提交 (Read uncommitted)
读提交(Read Committed)
可重复读(Repeated Read)
3.实现方式
(1)编程式事务管理对基于 POJO 的应用来说是唯一选择。我们需要在代码中调用beginTransaction()、commit()、rollback()等事务管理相关的方法,这就是编程式事务管理。
(2)基于 TransactionProxyFactoryBean的声明式事务管理
(3)基于 @Transactional 的声明式事务管理
(4)基于Aspectj AOP配置事务
4.结构
通过各种方式定义的transaction经过parse形成definition,definition产生transationManagerBeanFactory
transationManagerBeanFactory最终产生transationManager,transationManager可以完成事务的处理。
TransactionSynchronization负责事务的监听。