前言:
自己对JPA的了解真的很少,也没用用过,这一次在别人的项目中看到了,所以打算学习一下,学习第一课先来了解一下JPA是什么,方便以后的学习。

什么是JPA?

JPA(Java Persistence API) java持久化API。是一套SUN公司java官方制定的ORM方案,是规范,是标准,sun公司自己并没有实现。
JPA通过JDK 5.0注解描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。

什么是ORM

ORM(Object Relational Mapping)对象关系映射。
在操作数据库之前,先把数据表与实体类关联起来。然后通过实体类的对象操作(增删改查)数据库表,这个就是ORM的行为。
所以ORM就是一个实现使用对象操作数据库的设计思想。 这就说明JPA的作用就是通过对象操作数据库的,不用编写SQL语句。

JPA的优势

1. 标准化

JPA是JCP组织发布的JAVA EE标准之一,因此任何声称符合JPA标准的框架都遵循同样的架构,提供相同的访问API,这保证了基于JPA开发的企业应用能够经过少量的修改就能在不同的JPA框架下运行。

2. 容器级特性的支持

JPA框架这种支持大量数据集、事务、并发等容器级事务,这使JPA超越了简单持久化框架的局限,在企业级应用发挥更大的作用。

3. 简单方便

JPA的主要目标之一就是提供更加简单的编程模型:在JPA框架下创建实体和创建JAVA类一样简单,没有任何的约束和限制,只需要使用javax.persistence.Entity进行注释,JPA的框架和接口也都非常简单,没有太多特别的规则和设计模式的要求,开发者很容易的掌握。JPA基于非侵入式原则设计,因此可以很容易的和其他框架或者容器集成。

4. 查询能力
JPA的查询语言是面向对象而非面向数据库的,他以面向对象的自然语法构造查询语句,可以看成是Hibernate HQL的等价物。JPA定义了独特的JPQL(Java Persistence Query Language),JPQL是EJB QL的一种扩展,它是针对实体的一种查询语言,操作对象是实体,而不是关系数据库的表,而且能够支持批量更新和修改、JOIN、GROUP BY、Having 等通常只有SQL才能够提供的高级查询特性,甚至还能够支持子查询。
5. 高级特性

JPA中能够支持面向对象的高级特性,如类之间的继承、多态和类之间的复杂关系,这样的支持能够让开发者最大限度的使用面向对象的模型设计企业应用,而不需要自行处理这些特性在关系数据库的持久化。

JPA的实现者

既然我们说JPA是一套标准,意味着,它只是一套实现ORM理论的接口。没有实现的代码。
市场上主流的JPA框架有:
Hibernate (JBoos)、EclipseTop(Eclipse社区)、OpenJPA (Apache基金会)。
其中Hibernate是众多实现者之中,性能最好的。