Hibernate和Hibernate JPA的区别

13
5个回答

17

确实。

JPA只是一种API,允许您抽象出所使用的持久化层。Hibernate提供了EntityManager 接口的实现,它充当一个适配器 - 它使用与Hibernate SessionManager相同的底层方法。

这个想法是,您可以将实现切换到Eclipse Link,而不必更改任何源代码。


5
JPA只是一个规范,没有实现。您可以使用JPA注释对类进行注解,但是如果没有实现,什么也不会发生。将JPA视为必须遵循的指南或接口,而Hibernate的JPA实现是符合JPA规范定义的API的代码,并提供底层功能。
当您与JPA一起使用Hibernate时,实际上是在使用Hibernate JPA实现。这样做的好处是,您可以将Hibernate的JPA实现替换为其他JPA规范的实现。使用纯Hibernate时,因为其他ORM可能使用不同的方法/配置和注释,因此您无法切换到另一个ORM。

你讲解得非常好,谢谢! - Vandan Patel

2
对于您的第一个问题,JPA是一种Java API规范,描述了使用Java平台的应用程序中对关系数据的管理。而Hibernate是一种ORM(对象关系映射)库,遵循JPA规范。
您可以将JPA视为由Hibernate实现的一组规则。
至于第二个问题的答案,由于JPA只是一个抽象的持久性层,它需要实现。Hibernate实现了EntityManager接口,该接口使用Hibernate SessionManager。
通过这种方式,您完全与实现方式分离,这意味着您可以随时切换到Hibernate或OenJPA或任何其他实现方式,无需进行额外的代码更改。

2

这里是你问题的答案

传统的Hibernate方法使用 org.hibernate.SessionFactory,而JPA javax.persistence.EntityManager实现有何不同之处?

org.hibernate.SessionFactory 

如果你把底层ORM改为IBatis(例如),那么你也需要修改代码。
javax.persistence.EntityManager 

如果您将底层ORM更改为IBatis(例如),则无需更改代码。


1
我已经回答了你的第一个问题。 - Jaydeep Rajput

0
关键词 JPA Hibernate
位置 javax.persistence包中描述 org.hibernate中描述
意图 它只是Java规范 它是JPA的实现。
功能 它描述了Java应用程序中处理关系数据的方式 Hibernate是一种对象关系映射(ORM)工具,用于将Java对象保存在关系数据库系统中
标准API 它是一个标准API,允许执行数据库操作 它用于将Java数据类型与SQL数据类型和数据库表进行映射
CRUD操作 为了对映射的实体类的实例执行CRUD操作,它使用由EntityManagerFactory提供的EntityManager接口 为了对映射的实体类的实例执行CRUD操作,它使用由SessionFactory提供的Session接口

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