简单讲讲什么是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框架的关系可总结如下:
- JPA无法独立工作
JPA只是一套标准,相当于没有实现类的接口,因此,没有JPA Provider,JPA本身是无法工作的。 - Hibernate是JPA Provider之一
Hibernate是JPA Provider中功能很强的一个,从功能上来讲Hibernate已经是JPA的超集了。 - 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项目进行实践了。