我可以将 Hibernate 与 JTA 一起使用吗?

Can I use Hibernate with JTA?

如果 JTA 是 API,我可以使用 Hibernate 作为 JTA 的实现吗?

我有一个带有 Spring 和 Hibernate 的应用程序,我想知道哪个框架应该负责事务,Spring 还是 Hibernate?

Hibernate 不是 JTA 的实现。 Hibernate 是一个 JPA 实现。

JTA 是一种企业事务规范,由 Java EE 提供商或独立事务管理器(例如 Bitronix)实施。

Hibernate 提供事务 API 抽象,因为 ORM 工具使用事务性后写持久性上下文。

Spring 提供事务管理抽象,允许您从 RESOURCE_LOCAL 切换到 JTA 事务,只需进行一些微不足道的配置更改。

Spring 也设法在 Hibernate/JPA 事务 API 抽象之上进行集成。

如果您使用 Spring,那么您应该利用它的事务管理抽象,因此您不必使用 Hibernate/JPA 事务 API.

因为 Spring 使用 AOP,事务管理与您的业务逻辑分离,如果您使用程序化 Hibernate/JPA 事务 API.