什么是Spring Data JPA?

简单讲讲什么是Spring-Data-JPA

题图:from Google

Spring Data项目简介

Spring Data项目致力于为开发者提供持续、熟悉、基于Spring编程模型的数据访问方案,同时,也保留底层数据存储的特性,例如关系型与非关系型数据库的不同特点。

Spring Data项目包含多个子项目,包括关系型、非关系型数据库访问技术,Spring Data JPA只是Spring Data项目的一个子项目。用来对JPA提供支持,使得基于JPA的实现更加简单。

JPA简介

JPA——Java Persistence API,是伴随JDK5.0一起推出的持久化API;JPA为Java开发者提供一种实体/关系映射方案来管理Java程序中的关系型数据。

JPA提供一套标准的注解、接口以及JPQL(Java持久化查询语言),这使得开发可以面对统一接口。

JPA只是一套标准,JPA不提供实现。

参考文档:JDK5文档-JPA

JPA与Hibernate等ORM框架的关系

JPA作为Java标准已经被行业接受,因此一些ORM框架对JPA提供了支持,也即为JPA提供了实现(JPA Provider)。比如Hibernate、EclipseJPA、OpenJPA。

JPA与这些ORM框架的关系可总结如下:

  1. JPA无法独立工作
    JPA只是一套标准,相当于没有实现类的接口,因此,没有JPA Provider,JPA本身是无法工作的。
  2. Hibernate是JPA Provider之一
    Hibernate是JPA Provider中功能很强的一个,从功能上来讲Hibernate已经是JPA的超集了。
  3. JPA的优势在与易切换ORM框架
    JPA作为抽象出来的接口的优势就在于,如果选择使用JPA进行开发,可以很容易的切换JPA Provider。假设在某些场景,Hibernate性能表现不好,完全可以切换到另外一种支持JPA的ORM框架,比如EclipseJPA。

如果还没有搞懂JPA与Hibernate的关系,下面的文章分析的很透彻:JPA与hibernate的关系

Spring Data JPA

Spring Data JPA致力于明显提高实现JPA的效率,使用Spring Data JPA甚至可以不必编写逻辑代码即可完成数据访问操作。

Spring Data JPA提供一些特性,看起来确实很吸引人,比如借助其‘通过解析方法名创建查询’的特性,开发者不必写查询语句即可完成所需功能。

了解这些之后,就可以开始搭建一个Spring Data JPA项目进行实践了。