Каковы отношения между поставщиком JTA, таким как Atomikos, и пулом соединений, таким как HikariCP?

Я читаю Java Persistence with Hibernate и нашел следующий текст.

Сегодня доступны высококачественные автономные поставщики JTA, такие как Bitronix (используется для примера кода этой книги) и Atomikos, и их легко установить в любой среде Java. Думайте об этих решениях как о пулах соединений с базой данных с поддержкой JTA.

Насколько я понимаю, у JTA-провайдеров есть свои пулы подключений.

Итак, интегрируются ли они (как, если да) с пулами соединений, такими как HikariCP и C3P0? Спасибо.


person Taras Boychuk    schedule 01.12.2016    source источник


Ответы (1)


Ответ: НЕТ, вы не можете комбинировать поставщика JTA с этими пулами соединений JDBC.

Короткая причина такова: провайдеру JTA требуется XADataSource, а пулы соединений JDBC, названные вами, просто имеют стандартные DataSource.

Более длинная причина: с поставщиком JTA вы хотите обрабатывать глобальные транзакции - глобальные средства для разных источников данных. (например, ваша операция хочет что-то сделать в базе данных/источнике данных 1 и что-то в базе данных/источнике данных 2 - если одна из этих частей выйдет из строя, вы хотите, чтобы обе части откатились, как будто с обеими базами данных/источниками данных ничего не произошло) Это делается с помощью Two-Phase-Commit, и для этого требуется XADataSource. Ваши пулы соединений JDBC легковесны для приложений, использующих только один источник данных - для этих приложений вам не нужен JTA (даже если вы можете их использовать, конечно).

person Niklas P    schedule 01.12.2016
comment
Спасибо. Итак, что мы должны использовать, когда у нас есть приложение Spring Boot, которое работает с одним источником данных, и мы хотим использовать декларативный диспетчер tx? - person Taras Boychuk; 01.12.2016
comment
@Taras Обычный пул соединений и весенние транзакции. - person Kayaman; 02.12.2016