Hibernate和Hibernate JPA之间的区别

Lie*_*ies 11 java orm hibernate jpa

我发现了很多类似的问题

但没有人回答我的下一个问题.经典的hibernate方法org.hibernate.SessionFactory和JPA javax.persistence.EntityManager实现之间有什么不同?我听说,这个JPA实现使用org.hibernate.SessionFactory和像包装一样工作,是真的吗?

Bor*_*der 15

确实.

JPA只是一个API,允许您从使用的持久层中抽象出来.Hibernate提供了一个EntityManager充当接口的实现adapter- 它使用与hibernate相同的底层方法SessionManager.

例如,您可以将实现切换到Eclipse Link,而不必更改任何源代码.


小智 5

JPA 只是一个规范,意味着没有实现。您可以使用 JPA 注释尽可能多地注释您的类,但是如果没有实现,什么也不会发生。将 JPA 视为必须遵循的准则或接口,而 Hibernate 的 JPA 实现是满足 JPA 规范定义的 API 的代码,并提供底层功能。

当您将 Hibernate 与 JPA 一起使用时,您实际上正在使用Hibernate JPA 实现。这样做的好处是您可以将 Hibernate 的 JPA 实现替换为 JPA 规范的另一个实现。当您直接使用Hibernate 时,您将锁定实现,因为其他 ORM 可能使用不同的方法/配置和注释,因此您不能直接切换到另一个 ORM。