1. JPA是什么
Java Persistence API,用于对象持久化的API,是Java EE 5.0 平台标准的 ORM 规范,使得应用程序以统一的方式访问持久层。提供了以pojo编程模型为持久化对象的机制:通过 JDK 5.0 注解或 XML 描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。JPA 的目标之一是制定一个可以由很多供应商实现的API,目前Hibernate 3.2、TopLink 10.1.3以及OpenJpa都提供了JPA的实现
Hibernate
JPA的始作俑者就是Hibernate的作者,Hibernate 从3.2开始,就开始兼容JPA
OpenJPA
OpenJPA 是 Apache 组织提供的开源项目
TopLink
TopLink以前需要收费,如今开源了;OpenJPA虽然免费,但功能、性能、普及性等方面更加需要加大力度。JPA做为Java EE5里面的新成员,跟jdbc一样就是一接口,具体实现由服务器实现
2. JPA优势
标准化
提供相同的访问 API,这保证了基于JPA开发的企业应用能够经过少量的修改就能
够在不同的JPA框架下运行。越来越多的提供商期待在不久的将来提供 JPA 实施。
对容器级特性的支持
JPA 框架中支持大数据集、事务、并发等容器级事务
简单易用,集成方便
JPA的主要目标之一就是提供更加简单的编程模型,在JPA框架下创建实体和创建Java 类一样简单,只需要使用 javax.persistence.Entity进行注释;JPA的框架和接口也都非常简单,可媲美JDBC的查询能力
JPA的查询语言是面向对象的,JPA定义了独特的JPQL,而且能够支持批量更新和修改、JOIN、GROUP BY、HAVING 等通常只有 SQL 才能够提供的高级查询特性,甚至还能够支持子查询。
支持面向对象的高级特性
JPA 中能够支持面向对象的高级特性,如类之间的继承、多态和类之间的复杂关系,最大限度的使用面向对象的模型
3. JPA缺点
由于非常新,JPA 规范可能还需要进过重要发展才会变得很稳定。
JPA是一个规范而不是一个产品。
需要提供商提供一个实施,才能获得这些基于标准的 API 的优势。
JPA是Hibernate、TopLink,JDO等ORM框架真子集,只提供其中最好的功能,如果应用程序中需要的功能,但是规范中没有提供的功能,则使用供应商特有的API ,移植起来比较麻烦,所以要尽可能地使用JPA API。
4. JPA包括3方面的技术
ORM映射元数据:JPA支持XML和 JDK 5.0注解两种元数据的形式,元数据描述对象和表之间的映射关系,框架据此将实体对象持久化到数据库表中。
JPA的API:用来操作实体对象,执行CRUD操作,框架在后台替我们完成所有的事情,开发者从繁琐的 JDBC和 SQL代码中解脱出来。
查询语言:这是持久化操作中很重要的一个方面,通过面向对象而非面向数据库的查询语言查询数据,避免程序的 SQL语句紧密耦合。
5. JAP生命周期
新建态new
新创建的实体对象,尚未拥有持久化主键,没有和一个持久化上下文关联起来
受控态managed
已经拥有持久化主键并和持久化上下文建立了联系
游离态detached
拥有持久化主键,但尚未和持久化上下文建立联系
删除态removed
拥有持久化主键,已经和持久化上下文建立联系,但已经被安排从数据库中删除
6. JPQL
Java Persistence Query Language(Java持久化查询语言)
是一种可移植的查询语言,可以被编译成所有主流数据库服务器上的SQL
JPQL是面向对象的,通过面向对象而非面向数据库的查询语言查询数据,在Java空间对类和对象进行操作,避免程序的SQL语句紧密耦合
使用 javax.persistence.Query接口代表一个查询实例
参考资料:
JPA从入门到精通 http://wenku.baidu.com/link?url=48ofcD8yH1Hyhda77cKVYV8PBf_4IEHG9o3TAK7dChw5ghaZXBo27wkvtgUOVvQcUGdgK882O6XufHX_aGMQwKW-8_REdwKK4n4AwqU2ZU3