Hibernate和JPA有什么区别?

sfr*_*frj 11 java hibernate jpa java-ee jpa-2.0

当我在大学学习网络编程时,他们告诉我们关于休眠的问题.

我们使用了一段时间,我甚至有机会在一家公司的真实场景中使用它近8个月.现在我完全切换到Java EE 6(我爱上了:)),我使用JPA来满足我的ORM需求.

我使用它已经有几个月,但我真的不明白一个和另一个之间有什么区别.为什么有些人说一个或另一个更好或更差?我在两者中做映射和注释的方式几乎相同......

也许你可以解决我的一些疑虑:

- 每个的优点和缺点是什么?

- Hibernate使用JPA还是相反(它们是否相互依赖)?

- 从功能的角度来看,有哪些功能没有另一个?

- 两者之间有其他差异吗?

Buh*_*ndi 8

JPA(Java Persistence API)是一个API,JPA 2.0是JSR 317组.基本上,它是一个通过使用ORM(对象关系映射)来管理关系数据的框架,用于数据持久性.

Hibernate是一个ORM库,可将POJO/JavaBeans映射到数据持久性.ORM和JPA都有一个对象/关系元数据(XML,Annotations),用于将POJO映射到DB表.

Hibernate是否使用JPA或其他方式(它们是否相互依赖)?

Hibernate 3现在支持JPA 2.0.JPA是使用对象模型描述关系数据的关系和管理的规范.由于JPA是一个API,Hibernate实现了这个API.您所要做的就是使用JPA API类/接口编写程序,将Hibernate配置为JPA资源,然后运行JPA.

各有哪些优缺点?

好处:

  • 避免低级JDBC和SQL代码.
  • 它是免费的(EclipseLink,例如JPA).
  • JPA是EJB3和Java EE的标准和一部分.

这就是我所知道的Hibernate.


Mic*_*rdt 7

JPA是持久性映射的API标准.它是在Hibernate之后很久就开发出来的,并且深受其影响.

要使用JPA,您需要JPA实现.Hibernate是一个这样的JPA实现,因为它被扩展为实现它启发的API.

此外,Hibernate提供了JPA标准不提供的一些功能,但通常不需要这些功能.

另一方面,如果您只使用JPA功能,那么您的代码也应该使用不同的JPA实现 - 经验表明兼容性很少是100%,但切换到不同的实现不需要大量工作.