我正在使用同时使用JMS和Hibernate的独立应用程序。Spring同步Hibernate和JMS事务
如果我希望跨两种资源进行交易,则文档建议使用JTA。
但是,现在用@Transaction注释的DAO方法(和HibernateTransactionManager),这似乎已经工作。当我在JmsTemplate上调用send()时,不会立即发送消息,而是在方法返回时使用Hibernate会话提交JMS会话。
我不知道这是如何没有JtaTransactionManager,所以我检查了源代码。事实证明,Hibernate的包装器和JmsTemplate都使用TransactionSynchronizationManager注册会话,并且在Hibernate会话提交时JMS会话将被提交。
这和JTA交易有什么不同。我可以用它来代替后者吗?
您是否检查其中一个失败时会发生什么?他们两个都回滚了吗? –