Spring外部事务与JTA
内容
- Spring内部事务与外部事务
- JTA与Spring JTA实现
- JTA与XA
- JTA分布式事务实例
本地事务
- Spring容器管理事务的生命周期
- 通过Spring事务接口调用
- 业务代码与具体事务的实现无关
外部(全局)事务
- 外部事务管理器提供事务管理
- 通过Spring事务接口,调用外部管理器
- 使用JNDI等方式获取外部事务管理器的实例
- 外部事务管理器一般由应用服务器提供,如Jboss等
使用应用服务器实现
不使用应用服务器实现
外部(全局)事务 - JTA
- 外部事务管理器提供JTA事务管理
- JTA事务管理器可以管理多个数据资源
- 通过2阶段提交实现多数据源的事务
XA与JTA
JTA是XA规范在Java中的实现
JTA核心接口
- TransactionManager
- XAResource
- XID
弊端
- 两阶段提交
- 事务时间太长、锁数据的时间太长
- 低性能、低吞吐量
实例一(单数据源)
内容
- 使用Spring JTA事务管理
- Atomikos外部事务管理器提供JTA事务管理
- 使用一个数据库 - 单数据资源
实例二(多数据源)
内容
- 使用Spring JTA事务管理
- Atomikos外部事务管理器提供JTA事务管理
- 多个数据源:DB,MQ