在Hibernate中,JTA、JPA和纯JDBC的区别是什么?

71

JTA、JPA和普通的JDBC在Hibernate方面有什么区别?

3个回答

88

要有差异存在,就必须有共同点,除了与数据库相关(虽然JTA不仅仅是这样),它们没有更多的共同点:

  • JPA 是 Java 对象关系映射的标准 - 它指定了一组注释和一个接口 EntityManager 用于执行与映射对象的持久化操作。Hibernate 实现了 JPA 标准。

  • 普通 JDBC 是访问数据库的技术。Hibernate 实际上使用它来执行数据库操作,在 "幕后" 使用 JDBC 发送查询到数据库。

  • JTA 是一个事务 API,并且在 Hibernate 中是可选的。它 (逻辑上) 处理事务行为。


5
JTA负责在使用实体管理器时进行回滚和提交操作。JPA使用JTA吗?或者仅在使用两个数据库副本时才使用JTA?请回答,我有疑惑。 - Ced
“为了存在差异,必须有共同点” - 这是一个观点还是事实? - Koray Tugay
@Ced请看下面的答案。[答案链接:https://dev59.com/Mm865IYBdhLWcg3wQMWW#59304566] - Soufiane Roui

38
  • JDBC 是用于数据库连接的 Java 标准。
  • JPA 使得 Java 开发人员无需了解 JDBC 和数据库操作的内部工作方式。Hibernate、EclipseLink、OpenJPA 和 Data Nucleus 是著名的 JPA 实现。
  • JTA 是用于事务的标准,允许在多个数据库之间管理多个事务。

JPA 利用 JDBC 进行数据库连接和 SQL 相关操作,并 -可选地- 利用 JTA 将分布式事务管理细节委托给它。


10

JPA (Java 持久化 API) 是 Java ORM 标准/规范,用于在关系型数据库中存储、访问和管理 Java 对象。Hibernate 是 Java Persistence API (JPA) 规范的一个实现。

JTA (Java 事务 API) 是 Java 分布式事务的标准/规范。当您有跨多个连接/数据库/资源的事务时,它就会发挥作用。Atomikos 是 JTA 的一个实现。(像 IBM Websphere 这样的应用服务器拥有自己的 JTA 实现。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接