Spring, синхронизирующий транзакции Hibernate и JMS

Я работаю над автономным приложением, которое использует как JMS, так и Hibernate.

Документация предполагает использование JTA, если я хочу иметь транзакции между обоими ресурсами.

Однако прямо сейчас с аннотированным методом DAO @Transaction (и HibernateTransactionManager) это, кажется, уже работает.Когда я вызываю send() для JmsTemplate, сообщение не отправляется немедленно, а сеанс JMS фиксируется с сеансом Hibernate по мере возврата метода.

Я не знал, как это возможно без JtaTransactionManager, поэтому я проверил исходный код. Оказывается, и оболочка для Hibernate, и JmsTemplate регистрируют сеансы с помощью TransactionSynchronizationManager, и сеанс JMS будет зафиксирован при фиксации сеанса Hibernate.

Чем эта транзакция отличается от JTA-транзакции. Могу ли я использовать это, чтобы заменить последний??

5
задан billc.cn 29 May 2012 в 13:27
поделиться