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

Posted

技术标签:

【中文标题】像 Atomikos 这样的 JTA 提供者和像 HikariCP 这样的连接池之间有啥关系?【英文标题】:What are the relationships between JTA provider like Atomikos and connection pool like HikariCP?像 Atomikos 这样的 JTA 提供者和像 HikariCP 这样的连接池之间有什么关系? 【发布时间】:2017-04-16 04:33:24 【问题描述】:

我正在阅读Java Persistence with Hibernate,我发现了以下文字。

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

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

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

【问题讨论】:

【参考方案1】:

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

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

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

【讨论】:

谢谢。那么,当我们有类似 Spring Boot 应用程序,它与一个数据源一起工作并且我们想使用声明式 tx 管理器时,我们应该使用什么? @Taras 一个普通的连接池和spring的事务。

以上是关于像 Atomikos 这样的 JTA 提供者和像 HikariCP 这样的连接池之间有啥关系?的主要内容,如果未能解决你的问题,请参考以下文章

使用Atomikos实现JTA分布式事务

atomikos的Jta配置

分布式事务使用atomikos+jta解决分布式事务问题

spring3.0+Atomikos 构建jta的分布式事务

将 JTA 属性设置为 Atomikos + Spring Boot 配置

spring3.0+Atomikos 构建jta的分布式事务