JTA(Java Transaction API),主要用于解决分布式的多个数据源的事务,主要采用的是二阶段提交法。而JDBC的连接提供的事务则是单个数据源的事务。JDBC单个数据源的事务都是由数据库自己实现。JTA因为其分布式和多数据源,所以需要一个事务管理器去实现不同数据源的一个事务。也就是说JTA主要是负责对多个数据源它们的单个事务进行一个包装管理,使得这多个数据源不同事务之间实现为一个事务。

一般采用二阶段提交法,比如数据源A,B,现在要对A进行delete,然后才能对B的数据进行delete,这时候怎么做呢。这个时候JTA比如先对A进行操作,若返回异常,则得出A失败,A操作不commit,同时将B的操作进行会滚;同理若成功,A操作commit,B操作也照常。同理B也是如此。