【问题标题】:How to ensure transaction management when updating two database更新两个数据库时如何保证事务管理
【发布时间】:2015-01-18 03:04:02
【问题描述】:

当连接两个不同的数据库(一个是mysql,另一个是oracle)时,如何确保两个数据库中的事务都成功或不成功。

更多信息..

我有一个事务,我将更新两个不同的数据库。因此我有两个不同的服务和两个不同的 DAO。我怎样才能确保交易在数据库中成功或没有..

谢谢 车坦

【问题讨论】:

  • 你需要使用分布式事务。这通常由应用程序服务器管理,但您可以使用XADataSources 自己完成,但这会增加一些复杂性。

标签: java mysql database oracle dao


【解决方案1】:

这称为“两阶段提交”。您需要两个数据库的 JTA 事务管理器和 XA JDBC 驱动程序才能使其工作。

您问题中的问题在于“服务”一词:如果将两个 DAO 封装为单独的 Web 服务,那么 JTA 将无法工作。然后调用这两个服务的对象将不得不管理一切。您必须创建补偿事务,跟踪每次调用的成功或失败,并做出相应的反应。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-31
    • 1970-01-01
    • 1970-01-01
    • 2015-03-14
    相关资源
    最近更新 更多