Java事务服务

标签 java transactions

我想在我的 Java 应用程序中使用 Java 事务服务进行分布式事务管理。

我有 3 个不同的数据库,必须使用 3 个不同的 Connection 对象连接到它们。我想在 3 个数据库中分别插入某些数据。 我的要求是应该保持原子性。因此,要么数据应该插入到所有 3 个数据库中,要么不应该插入到任何数据库中。 我在网上搜索了这种交易,并得到了Java Transaction服务。 我可以在这里找到它的API http://java.sun.com/products/jts/javadoc/index.html 但我仍然不明白如何使用它来实现交易。有人可以给我提供 Java 事务服务示例代码或教程的链接吗?

提前致谢, 阿尼凯特·科达里

最佳答案

几点:

  1. XA 并不是解决此问题的唯一可能的解决方案,尽管它可能是最简单的解决方案,因为它周围的工具已经成熟(搜索 CAP 定理和 BASE - 基本可用的软状态最终一致)。
  2. XA 事务具有故障模式,并且您仍然可能会在参与的数据库之间出现不一致的情况。
  3. 您没有说明您正在使用哪个数据库 - 也许其中一个或全部不支持 XA 事务。
  4. 您不太可能希望在 Java 中使用原始 JTS/JTA API,而是可以使用任何众所周知的 Java 应用程序服务器,因为它们包含事务管理器(使用 JTS/JTA)。

因此,假设您决定使用 Java 应用程序服务器,我建议您使用 Spring、EJB 3.0 或类似的工具进行数据库交互,因为它们将允许您执行声明式事务,这比您自己手动编写事务逻辑要干净得多。

这是一个link Spring 的事务文档。

关于Java事务服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1398099/

相关文章:

Java JNI - 返回 jintArray 时出现 EXCEPTION_ACCESS_VIOLATION

java - 为 hibernate 和@Transactional 配置 spring 数据源

Paypal $0 美元交易?

java - LibGDX 如何将游戏放入表格中? *** 固定的 ***

java - 获取图像中最常出现的颜色

node.js - 管理数据库中不断变化的数据

PHP Mysql - 创建自己的银行系统

javascript - 在 firebase 中,为什么事务不像在 admin api 中那样在云函数中工作?

java - 只有在单击关联的按钮两次后,才能通过 EditText 显示正确的输出

java - 为什么不能在赋值运算符中递增变量?