一. 前言:
在写这篇博客之前,我们需要弄清楚两个概念:本地事务和分布式事务。
本地事务:只处理单一数据源,比如单个数据库。
分布式事务:处理多种异构的数据源, 比如某个业务操作中同时包含JDBC和JMS或者某个操作需要访问多个不同的数据库。
Java通过JTA完成分布式事务, JTA本身只是一种规范, 本篇博客将使用JOTM作为实现, 后续还会使用Atomikos实现。
二. 业务背景:
假定我们有这样一个需求:当我们新建一个用户的时候需要往一个DB中插入一条用户记录,还需要往另一个DB中记录日志
因为是不同的DB操作,所以这里就涉及到分布式事务的处理。