JTAC 在 Spring Boot 中是不是推荐与 Hibernate 一起使用

Posted

技术标签:

【中文标题】JTAC 在 Spring Boot 中是不是推荐与 Hibernate 一起使用【英文标题】:Is JTA recommended with Hibernate in SpringbootJTAC 在 Spring Boot 中是否推荐与 Hibernate 一起使用 【发布时间】:2020-11-18 12:24:05 【问题描述】:

我必须使用hibernate和spring boot。是否建议在此堆栈中使用 JTA 事务管理器?

如果推荐 JTA,如何在控制器或服务层以编程方式访问当前会话?举个例子会更有帮助。

【问题讨论】:

您使用哪个事务管理器不会改变您获取当前会话(或者更确切地说是 EntityManager)的方式。你真的需要 JTA 还是不需要? 我正在考虑使用 spring 的 JtaTransactionManager。 JTA 的原因是,根据要求,在单个事务范围内管理 2 个资源。 【参考方案1】:

作为春季文档says:

通常,只有当您的应用程序需要处理跨多个资源的事务时,您才需要应用程序服务器的 JTA 功能,这对于许多应用程序来说不是必需的。

根据spring boot documentation:

Spring Boot 通过使用 Atomikos 或 Bitronix 嵌入式事务管理器来支持跨多个 XA 资源的分布式 JTA 事务。部署到合适的 Java EE 应用服务器时也支持 JTA 事务。

当检测到 JTA 环境时,使用 Spring 的 JtaTransactionManager 来管理事务。自动配置的 JMS、DataSource 和 JPA bean 已升级为支持 XA 事务。您可以使用标准 Spring 习惯用法,例如 @Transactional,来参与分布式事务。

第二个问题可以看this的回答。

【讨论】:

以上是关于JTAC 在 Spring Boot 中是不是推荐与 Hibernate 一起使用的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 推荐的基础 POM 文件

1024|推荐一个开源免费的Spring Boot教程

(转)收集 Spring Boot 相关的学习资料,Spring Cloud点这里 重点推荐:Spring Boot 中文索引

Spring Boot工程结构推荐

推荐 2 个 Spring Boot 的工作流项目

注意:Spring Boot 2.7开始spring.factories不推荐使用了,接下来这么玩...