JPA由EJB3.0软件专家组开发,作为JSR-220实现的部分,开发者可以在Web应用甚至桌面应用中使用。JPA的宗旨是为POJO提供持久化标准规范。目前,Hibernate 3.2、TopLink 10.1.3以及OpenJPA都提供了JPA的实现。
以下简单介绍下JPA的优势。
1)标准化
JPA是JCP组织发布的Java EE标准之,因此任何声称符合JPA标准的框架都遵循同样的架构,提供相同的访问API。这保证了基于JPA开发的企业应用能够经过少量的修改就能够在不同的JPA框架下运行。
2)对容器级特性的支持
JPA框架支持大数据集、事务、并发等容器级事务,这使得JPA超越了简单持久化框架的局限,在企业应用中发挥了更大的作用。
3)简单易用,集成方便
JPA的主要目标之就是提供更加简单的编程模型:在JPA框架下创建实体和创建Java类样简单,没有任何的约束和限制,只需要使用javax.persistence.Entity进行注释;JPA的框架和接口也都非常简单,没有太多特别的规则和设计模式要求,开发者可以很容易掌握。JPA基于非侵入式原则设计,因此可以很容易地和其它框架或者容器集成。
4)可媲美JDBC的查询能力
JPA的查询语言是面向对象而非面向数据库的,它以面向对象的自然语法构造查询语句,可以看成是Hibernate HQL的等价物。JPA定义了独特的JPQL(Java Persistence Query Language),JPQL是EJB QL的种扩展,它是针对实体的种查询语言,操作对象是实体,而不是关系数据库的表,而且支持批量更新和修改、JOIN、GROUP BY、HAVING等通常只有SQL才能够提供的高级查询特性,甚至还能够支持子查询。
5)支持面向对象的高级特性
JPA能够支持面向对象的高级特性,如类之间的继承、多态和类之间的复杂关系,这样的支持能够让开发者大限度地使用面向对象的模型设计企业应用,而不需自行处理这些特性在关系数据库的持久化。