JPA的理解
JPA概念
Java persistence API的简称,中文名是Java持久层API,是JDK5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。(对象持久化:是将内存中的对象保存到可永久保存的存储设备中的一种技术)
JPA出现的原因
1.简化现有JavaEE和JavaSE应用的对象持久化的开发工作;
2.Sun希望整合ORM技术,实现在持久化领域的统一应用;
JPA提供的技术
1.ORM映射元数据
JPA支持XML和JDK5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系框架据此将实体对象持久化到数据库表中;(元数据:是指用来描述数据的数据,就是描述代码间关系的数据,如:hibernate是用hbm文件。JDK5.0出来后,java语言中就有了四种类型(TYPE),即类(class)、枚举(enum)、接口(interface)和注解(@interface),它们是处在同一级别的。java就是通过注解来表示元数据的。)
2.JPA的API
用来操作实体对象,执行crud操作,框架在底层替我们完成所有的事情,开发者从繁琐的JDBC 和 SQL代码中解脱;
3.查询语言
通过面向对象而非面向数据库的查询语言查询数据,避免程序的SQL语句紧密耦合;
Hibernate
JPA是需要Provider(供应者)来说实现其功能的,Hibernate就是JPA Provider中很强的一个。从功能上了来说,JPA现在就是Hibernate功能的一个子集,Hibernate从3.2开始,就开始兼容JPA。Hibernate3.2获得了Sun TCK的 JPA(Java Persistence API) 兼容认证。
JPA和Hibernate之间的关系,可以简单的理解为JPA是标准接口,Hibernate是实现。
Hibernate是如何实现与JPA 的这种关系的呢?
Hibernate主要是通过三个组件来实现的,及hibernate-annotation、hibernate-entitymanager和hibernate-core。
(1)hibernate-annotation是Hibernate支持annotation方式配置的基础,它包括了标准的JPA annotation以及 Hibernate自身特殊功能的annotation。
(2)hibernate-core是Hibernate的核心实现,提供了Hibernate所有的核心功能。
(3)hibernate-entitymanager实现了标准的JPA,可以把它看成hibernate-core和JPA之间的适配器,它并不直接提供ORM的功能,而是对hibernate-core进行封装,使得Hibernate符合JPA的规范。
总的来说,JPA是规范,Hibernate是框架,JPA是持久化规范,而Hibernate实现了JPA。