Hello Folks,
我有一个要求,就像我必须在同一个事务中的(不同)数据库中执行CRUD操作,例如SQL和ORACLE。有没有办法实现这个目标?
(1)是否可以使用一个SessionFactory实现这一点,如果是,那么如何?
(2)是否可以使用两个不同的Sessionfactory来完成它,如果那么如何?
只有我拥有的条件是当我触发一个查询以插入它时,它应该同时插入两个数据库。
我希望我的问题非常明确。 等待你的回复。
答案 0 :(得分:0)
您可以使用全局交易。这在Java Transaction API中指定。许多应用程序服务器都支持使用专有的事务管理器,而后者可以在会话工厂中使用。基本思想是使用两阶段提交协议,必须由您的数据库支持(他们需要了解prepare命令)。通常会发现这些驱动程序正在寻找XA兼容性。 Oracle的Weblogic应用服务器,例如已经附带符合XA标准的Oracle驱动程序。无论如何,这可能与其他应用服务器不同。
JTA基于XOpen XA,您应该仔细阅读以了解全局。
G-Man提供了Atomikos配置的良好链接,因为您的应用服务器没有提供合适的TA管理器,或者您不想使用应用服务器。