跨2个数据库的事务,hibernate + JPA在一个独立的Java应用程序中

时间:2012-03-21 18:27:48

标签: hibernate jpa jta

我们有一个java应用程序是独立的。目前我们只连接到一个数据库,它工作正常。我们有一个新的要求,我们必须连接到第二个数据库,其中一个事务必须实际插入数据数据库。 有没有办法我们可以使用hibernate来做到这一点。我尝试使用HibernateEntityManager并将其配置为指向2个数据库,但提交是问题。

如果没有JTA,有没有办法做到这一点?或者,如果JTA是唯一的选择......更好地使用App服务器,或者我们应该选择独立的JTA实现。

提前致谢!

1 个答案:

答案 0 :(得分:0)

这称为两阶段提交,其中提交需要跨多个系统发生(另一个例子是将JMS消息与DB事务一起出列)。

正如所怀疑的那样,JTA是走到这里的方式,您需要一个符合XA标准的JDBC驱动程序才能跨越连接跨越事务。

您不一定需要应用服务器,但其中许多都为您提供了自己需要实现的内置功能(以下是一个示例:http://blog.springsource.com/2011/08/15/configuring-spring-and-jta-without-full-java-ee/)。例如,如果您使用JBoss,它会内置一个完全符合XA标准的tx协调器。