什么是Hibernate?
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装。
它将POJO于数据库表建立映射关系,是一个全自动的ORM框架。
Hibernate可以自动生成SQL语句,自动执行。
什么是JPA?
JPA的全称是Java Persistence API,即Java持久化API。
JPA是SUN公司推出的一套基于ORM的规范,内部由一系列的接口和抽象类构成。
JPA通过JDK5.0注解描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库当中。
JPA的优势在哪?
1、标准化
JPA是JCP组织发布的JavaEE标准之一,因此任何声称符合JPA标准的框架都遵循着同样的架构,提供相同的访问API,这保证了基于JPA开发的企业应用能够经过少量的修改就能在不同的JPA框架下运行。
2、容器级特性的支持
JPA框架中支持大数据集、事务、并发等容器级事务,这让JPA超越了简单持久化框架的局限,在企业应用中发挥更大的作用。
3、简单方便
JPA的主要目标之一就是提供更加简单的编程模型,在JPA框架下创建实体和创建Java类一样简单,没有任何的约束和限制,只需要使用javax.persistence.Entity进行注释。
JPA的框架和接口也都非常的简单,没有太多特别的规则和设计模式的要求,开发者可以很容易的掌握。
JPA基于非侵入式原则设计,因此可以很容易的和其他的框架或者容器继承。
4、查询能力
JPA的查询语言是面向对象而非面向数据库的。
JPA以面向对象的自然语法构造查询语法,可以看成是HibernateHQL的等价物。
JPA定义了独特的JPQL(Java Persistence Query Language)。
JPA是EJB QL的一种扩展,它是针对实体的一种查询语言,操作对象是实体,而不是关系数据库的表。
JPA能够支持批量更新和修改、JOIN、GROUP BY、HAVING等通常只有SQL才能够提供的高级查询特性,甚至还能够支持子查询。
5、高级特性
JPA能够支持面向对象的高级特性,比如类之间的继承、多态和类之间的复杂关系。
这样的支持让开发者能够最大限度的使用面向对象的模型设计企业应用,而不需要自行处理这些特性在关系数据库的持久化。
JPA和Hibernate的关系
JPA规范本质上就是一种ORM规范,注意不是ORM框架,因为JPA并没有提供ORM实现,它只是指定了一些规范,提供了一些编程的API接口,具体实现规则由服务厂商来提供。
JPA和Hibernate的关系就像是JDBC和JDBC驱动之间的关系,JPA是规范,Hibernate除了作为ORM框架之外,它也是一种JPA实现。
如果使用JPA规范进行数据库操作,底层需要Hibernate作为其实现类完成数据持久化工作。