在2006年初始发布JPA 1.0之前,有许多供应商在对象关系映射(ORM)工具领域进行竞争,他们都拥有非常相似的API,可以实现许多相同的目标。但~是,这些项目都没有兼容和可互换的代码。JPA的目标是标准化Java应用程序如何执行ORM。在JPA 1.0中,所有竞争实现都是统一的,因为它们现在都实现了一个通用的标准API。
然而,由于Hibernate的普及,许多人在真正意味着JPA时继续使用Hibernate一词。Hibernate成为JPA的同名词,正如Kleenex是浴室纸巾的同名词一样。即使在今天,当开发人员和架构师谈论Hibernate时,他们实际上只是指JPA规范。
JPA | Java Persistence API,是Java EE 5的标准ORM接口,也是ejb3规范的一部分。 |
Hibernate | 当今很流行的ORM框架,是JPA的一个实现,但是其功能是JPA的超集。 |
JPA和Hibernate之间的关系,可以简单的理解为JPA是标准接口,Hibernate是实现。
Hibernate主要是通过三个组件来实现JPA的: hibernate-annotation、hibernate-entitymanager 和 hibernate-core。
hibernate-annotation | Hibernate支持annotation方式配置的基础,它包括了标准的JPA annotation以及Hibernate自身特殊功能的annotation。 |
hibernate-core | Hibernate的核心实现,提供了Hibernate所有的核心功能。 |
hibernate-entitymanager | 实现了标准的JPA,可以把它看成hibernate-core和JPA之间的适配器,它并不直接提供ORM的功能,而是对hibernate-core进行封装,使得Hibernate符合JPA的规范。 |