Hibernate-两个不同的事务将成功提交
我使用两个不同的数据库。我使用两个不同的会话从两个数据库中删除记录。代码如下:Hibernate-两个不同的事务将成功提交,hibernate,Hibernate,我使用两个不同的数据库。我使用两个不同的会话从两个数据库中删除记录。代码如下: try{ Session session1 = factory.getSession(); Transaction trn1 = session1.beginTrn(); session1.delete(foobar); trn1.commit(); Session session2 = jbomContext.getGrahpSession(); Transaction trn2 = se
try{
Session session1 = factory.getSession();
Transaction trn1 = session1.beginTrn();
session1.delete(foobar);
trn1.commit();
Session session2 = jbomContext.getGrahpSession();
Transaction trn2 = session2.beginTrn();
session2.delete(box);`enter code here`
trn2.commit();
}catch(Exception e){
trn1.rollback();
trn2.rollback();
}
这里的问题是,如果错误发生在transaction2中,我无法回滚transaction1。我对两阶段提交有一些想法。但是如果两个事务都会发生异常,我需要回滚事务。您无法回滚tr1(如果tr2的提交失败),因为此时tr1已经提交。至少在hibernate中,我没有看到一种原生的方法。如果您在一个成熟的JavaEE应用服务器上,或者可以通过其他方式(如和Spring的JtaTransactionManager)启用它,那么您可能可以使用分布式事务(JTA数据源)