java 跨数据库事务_java – 处理跨数据库服务器的事务

我有一个场景,工作单位定义为:

Update table T1 in database server S1

Update table T2 in database server S2

我希望上述工作单元完全发生或根本不发生(如同任何数据库事务一样).我怎样才能做到这一点?我进行了广泛的搜索,发现这个post接近我的预期,但这似乎对Hibernate非常具体.

我使用Spring,iBatis和Tomcat(6.x)作为容器.

解决方法:

这实际上取决于您需要的解决方案的稳健性.这种事情的最低可靠性是XA事务.要使用它,您需要一个支持初学者的数据库和JDBC驱动程序,然后您可以配置Spring使用它(here是大纲).

如果XA不够强大(XA有故障情况,例如在提交的第二阶段出现问题,例如硬件故障),那么你真正需要做的是将所有数据放在一个数据库中然后有一个单独的进程传播它.因此数据可能不一致,但可以恢复.

编辑:我的意思是将整个数据放入一个数据库.第一个数据库,或者用于此目的的不同数据库.该数据库基本上将成为从中提供最终数据视图的队列.写入该数据库(假设一个体面的数据库产品)将完成或完全失败.然后,一个单独的线程将轮询该数据库并将任何丢失的数据分发给其他数据库.因此,如果进程失败,当该线程再次启动时,它将继续分发过程.数据可能不会存在于您希望它立即出现的每个地方,但不会丢失任何内容.

标签:java,spring,transactions,tomcat,ibatis

来源: https://codeday.me/bug/20190726/1547491.html

  • 0
    点赞
  • 0
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:数字20 设计师:CSDN官方博客 返回首页
评论

打赏作者

意禹

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值