更新两个数据库时如何保证事务管理
Posted
技术标签:
【中文标题】更新两个数据库时如何保证事务管理【英文标题】:How to ensure transaction management when updating two database 【发布时间】:2015-01-18 03:04:02 【问题描述】:当连接两个不同的数据库(一个是mysql,另一个是oracle)时,如何确保两个数据库中的事务都成功或不成功。
更多信息..
我有一个事务,我将更新两个不同的数据库。因此我有两个不同的服务和两个不同的 DAO。我怎样才能确保交易在数据库中成功或没有..
谢谢 车坦
【问题讨论】:
你需要使用分布式事务。这通常由应用程序服务器管理,但您可以使用XADataSource
s 自己完成,但这会增加一些复杂性。
【参考方案1】:
这称为“两阶段提交”。您需要两个数据库的 JTA 事务管理器和 XA JDBC 驱动程序才能使其工作。
您问题中的问题在于“服务”一词:如果将两个 DAO 封装为单独的 Web 服务,那么 JTA 将无法工作。然后调用这两个服务的对象将不得不管理一切。您必须创建补偿事务,跟踪每次调用的成功或失败,并做出相应的反应。
【讨论】:
以上是关于更新两个数据库时如何保证事务管理的主要内容,如果未能解决你的问题,请参考以下文章