Atomikos 等 JTA 提供者与 HikariCP 等连接池之间有什么关系?

What are the relationships between JTA provider like Atomikos and connection pool like HikariCP?

我正在阅读 Java Hibernate 的持久性,我发现了以下文本。

Today, high-quality standalone JTA providers such as Bitronix (used for the example code of this book) and Atomikos are available and easy to install in any Java environment. Think of these solutions as JTA-enabled database connection pools.

据我了解,JTA 提供程序有自己的连接池。

那么,它们是否与 HikariCP 和 C3P0 等连接池集成(如何集成)?谢谢你。

答案是 ,您不能将 JTA 提供程序与这些 JDBC 连接池组合。

简短的原因是: JTA 提供者需要 XADataSource 而您命名的 JDBC 连接池只有标准的 DataSource.

较长的原因是: 使用 JTA 提供程序,您希望处理 全局事务 - 全局意味着不同的数据源。 (例如,您的操作想要在 database/DataSource 1 中做某事,在 database/DataSource 2 中做某事 - 如果其中一个部分失败,您希望两个部分都回滚,就好像两个部分都没有发生一样 databases/DataSources) 这是通过两阶段提交完成的,这需要一个 XADataSource。 您的 JDBC 连接池对于仅使用一个数据源的应用程序来说是轻量级的 - 对于此应用程序,您不需要 JTA(当然,即使您可以使用它们)。