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

Tar*_*ras 3 java connection-pooling jta atomikos hikaricp

我正在阅读Hibernate的Java Persistence,并且发现了以下文本。

如今,高质量的独立JTA提供程序(例如Bitronix(用于本书的示例代码)和Atomikos)已经上市,并且可以在任何Java环境中轻松安装。将这些解决方案视为支持JTA的数据库连接池

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

那么,它们是否与HikariCP和C3P0等连接池集成(如果可以的话)?谢谢。

Nik*_*s P 5

答案是否定的,您不能将JTA提供程序与这些JDBC连接池结合使用。

简短的原因是:JTA提供程序需求XADataSource和您命名的JDBC连接池只有standard DataSource

更长的原因是:使用JTA提供程序,您要处理全局事务 -不同数据源上的全局方法。(例如,您的操作想要在数据库/数据源1中执行某些操作,而在数据库/数据源2中执行某些操作-如果这些部分之一发生故障,则您希望两个部分都回滚,就像两个数据库/数据源都没有发生任何事情一样)由两阶段提交,这需要一个XADataSource。对于仅使用一个数据源的应用程序,JDBC连接池是轻量级的-对于此应用程序,您不需要JTA(当然,即使可以使用它们)。