我正在阅读Java Persistence with 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 提供程序,您希望处理全局事务 - 全局意味着不同的数据源。 (例如,您的操作想要在数据库/数据源 1 中执行某些操作,并在数据库/数据源 2 中执行某些操作 - 如果其中一个部分失败,您希望这两个部分都回滚,就好像两个数据库/数据源都没有发生任何事情一样)这就完成了通过两阶段提交,这需要 XADataSource。 对于仅使用一个数据源的应用程序来说,您的 JDBC 连接池是轻量级的 - 对于此应用程序,您不需要 JTA(当然,即使您可以使用它们)。
关于java - 像 Atomikos 这样的 JTA 提供者和像 HikariCP 这样的连接池之间有什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40912313/