Spring синхронизирует транзакции Hibernate и JMS

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

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

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

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

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

Ответы на вопрос(2)

Ваш ответ на вопрос