一、JPA简介
概念:
JPA顾名思义就是Java Persistence API的意思,是JDK 5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中。
优势:
- 标准化
JPA 是JCP组织发布的Java EE标准之一,因此任何声称符合JPA标准的框架都遵循同样的架构,提供相同的访问API,这保证了基于JPA开发的企业应用能够经过少量的修改就能够在不同的JPA框架下运行。
- 容器级特性的支持
JPA框架中支持大数据集、事务、并发等容器级事务,这使得 JPA 超越了简单持久化框架的局限,在企业应用发挥更大的作用。
- 简单方便
JPA的主要目标之一就是提供更加简单的编程模型:在JPA框架下创建实体和创建Java 类一样简单,没有任何的约束和限制,只需要使用 javax.persistence.Entity进行注释,JPA的框架和接口也都非常简单,没有太多特别的规则和设计模式的要求,开发者可以很容易的掌握。JPA基于非侵入式原则设计,因此可以很容易的和其它框架或者容器集成。
- 查询能力
JPA的查询语言是面向对象而非面向数据库的,它以面向对象的自然语法构造查询语句,可以看成是Hibernate HQL的等价物。JPA定义了独特的JPQL(Java Persistence Query Language),JPQL是EJB QL的一种扩展,它是针对实体的一种查询语言,操作对象是实体,而不是关系数据库的表,而且能够支持批量更新和修改、JOIN、GROUP BY、HAVING 等通常只有 SQL 才能够提供的高级查询特性,甚至还能够支持子查询。
- 高级特性
JPA 中能够支持面向对象的高级特性,如类之间的继承、多态和类之间的复杂关系,这样的支持能够让开发者最大限度的使用面向对象的模型设计企业应用,而不需要自行处理这些特性在关系数据库的持久化。
二、spring-data-jpa
JPA本身就是一套标准,就和jdbc一样,不同的上场都是可以来进行实现。目前使用的比较多的都是hibernate的实现。 然而在SpringBoot中我们可以无缝的集成Spring-data-jpa, 简答介绍一个Spring-data. 他也是属于Spring家族的一个产品,主要就是用来封装各种中间件的操作,比如Spring-data-jdbc,就是我们浅浅讲到的jdbcTemplate, 还有spring-data-jpa用来实现JPA, Spring-data-redis封装操作redis的api, 还有spring-data-mongodb, spring-data-elasticsearch,等等。
SpringData所包含的项目如下:

由于产品本身都是Spring的,所以和Spring的集成有着得天独厚的优势。并且也直接为Spring Boot提供了相应的starter,我们引入后就可以直接操作,非常方便。
三、JPA、hibernate、SpringDataJpa关系
JPA仅仅是一种规范,也就是说它仅仅定义了一些接口,而接口是需要实现才能工作的。所以底层需要某种实现,而Hibernate就是实现了JPA接口的ORM框架。
SpringDataJpa是Spring提供的一套简化JPA开发的框架,按照约定好的方法命名规则来创建DAO层接口,就可以在不写接口实现的情况下,实现对数据库的访问和操作。并且提供了一些常用的增删改查等方法的直接操作。 SpringDataJpa可以理解为JPA规范的再次封装抽象,底层还是使用了Hibernate的Jpa技术实现。
四、集成步骤
如果前面已引入mybatis,为防止冲突,先拉取一个feature/jpa的分支,这个分支里只负责集成JPA的操作。</


被折叠的 条评论
为什么被折叠?



