1

大家好,

我有一个要求,比如我必须在同一个事务中在不同的数据库(比如 SQL 和 ORACLE)中执行 CRUD 操作。有没有办法做到这一点?

(1) 是否可以使用一个 SessionFactory 来实现这一点,如果可以,那么如何实现?

(2) 是否可以使用两个不同的 Sessionfactory 来做到这一点,如果那么如何?

我唯一的条件是当我触发一个查询以插入时,它应该同时插入到两个数据库中。

我希望我对我的问题很清楚。等待你的回复。

4

1 回答 1

0

您可以使用全局事务。这是在 Java 事务 API 中指定的。许多应用程序服务器确实支持使用专有事务管理器,而该事务管理器又可以在您的会话工厂中使用。基本思想是使用数据库必须支持的两阶段提交协议(他们需要了解准备命令)。通常发现这些驱动程序是为了寻找 XA 兼容性。例如,Oracle 的 Weblogic 应用服务器已经附带了一个 XA 兼容的 Oracle 驱动程序。无论如何,这对于其他应用服务器可能会有所不同。

JTA 基于XOpen XA,您应该通读它以了解全局。

G-Man 为 Atomikos 的配置提供了一个很好的链接,以防您的应用服务器没有提供合适的 TA 管理器或者您不想使用应用服务器。

于 2012-12-03T13:44:43.977 回答