【问题标题】:when to use global transaction Or use spring aop for transaction何时使用全局事务或使用spring aop进行事务
【发布时间】:2011-01-02 08:12:28
【问题描述】:
第一季度。我明白当我们需要处理多个数据库时,我们需要使用全局事务。但从这篇文章http://fogbugz.atomikos.com/default.asp。该人建议只使用 spring aop 就不同的事务管理器(更多>数据源/会话工厂)提供建议。谁能解释在什么样的情况下我们可以使用这种方法在什么样的情况下我们需要 XA(全局事务)与 atomikos 或 jotm 或 ejb..etc
【问题讨论】:
标签:
java
hibernate
jta
jotm
atomikos
【解决方案1】:
我认为 Pascal 已经彻底回答了您的问题,但我想尝试简化/总结它。
如果您需要在没有事务范围要求的数据源上执行并行、独立的任务(例如,如果一个事务在一个数据源中失败,则不必回滚其他数据源),请使用 Pascal 的建议或方法在http://fogbugz.atomikos.com/default.asp?community.6.596.2(例如非 JTA / 非 XA / 非分布式)
如果您需要跨不同数据源的事务范围,例如如果一个数据源中的回滚应该回滚同一逻辑事务范围下的另一个数据源中的更改(例如银行数据库和信用卡数据库进行资金转移,那么如果没有相应的增量/减量,您将无法获得减量/增量另一方面)你需要一个 JTA 事务管理器(XA / 分布式)
希望这会使图片更清晰(如果我过度简化或完全错误,我愿意接受 cmets)