Транзакция через 2 базы данных, Hibernate + JPA в отдельном Java-приложении - PullRequest
1 голос
/ 21 марта 2012

У нас есть отдельное java-приложение. В настоящее время мы подключаемся только к одной базе данных, она работает нормально. У нас есть новое требование, когда мы должны подключиться ко второй базе данных, и одна из транзакций должна фактически вставить данные в обе базы данных. Есть ли способ, которым мы можем сделать это, используя спящий режим. Я попытался использовать HibernateEntityManager и настроил его так, чтобы он указывал на две базы данных, но проблема в фиксации.

Есть ли способ сделать это без JTA? Или, если JTA - единственный вариант ... лучше подходит для сервера приложений или мы просто должны перейти на отдельную реализацию JTA.

Заранее спасибо!

1 Ответ

0 голосов
/ 22 марта 2012

Это называется двухфазной фиксацией, когда фиксация должна происходить в нескольких системах (другим примером будет удаление из очереди сообщения JMS вместе с транзакцией БД).

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

Вам не обязательно нужен сервер приложений, но многие из них предоставляют вам встроенные возможности, которые в противном случае вам бы пришлось реализовать самостоятельно (вот пример: http://blog.springsource.com/2011/08/15/configuring-spring-and-jta-without-full-java-ee/)., если вы используете, например, JBoss, Он поставляется с встроенным XA-совместимым координатором передачи.

...