java - 像 Atomikos 这样的 JTA 提供者和像 HikariCP 这样的连接池之间有什么关系?

标签 java connection-pooling jta hikaricp atomikos

我正在阅读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/

相关文章:

java - 您可以创建自己的 JTA 事务吗?

java - 如何通过maven插件设置Java/Scala测试的系统属性?

java - MediaPlayer start()/stop() mUri 为 null

java - 从第 3 方类中删除最终修饰符

java - JPA 对对象使用 IN 子句

python - 如何增加 Twisted 的连接池大小?

java - 不断收到 org.hibernate.exception.JDBCConnectionException : could not execute query

mysql - ruby 、MySQL : Connection pool that is outside of the rails framework?

java - 您可以在不使用 JTA 的情况下在 OSGi 环境(如 Karaf)中使用 Hibernate 5.2 StatelessSession 吗?

tomcat - 没有可用的 JTA UserTransaction - 在 tomcat 7 中指定 'userTransaction' 或 'userTransactionName'