Spring-Data-Jpa简介

官网:

https://spring.io/projects/spring-data-jpa

官方介绍:

Spring Data JPA, part of the larger Spring Data family, makes it easy to easily implement JPA based repositories. This module deals with enhanced support for JPA based data access layers. It makes it easier to build Spring-powered applications that use data access technologies.

Implementing a data access layer of an application has been cumbersome for quite a while. Too much boilerplate code has to be written to execute simple queries as well as perform pagination, and auditing. Spring Data JPA aims to significantly improve the implementation of data access layers by reducing the effort to the amount that’s actually needed. As a developer you write your repository interfaces, including custom finder methods, and Spring will provide the implementation automatically.

Spring Data JPA是较大的Spring Data家族的一部分,它使实现基于JPA的存储库变得很容易。这个模块处理对基于JPA的数据访问层的增强支持。它使得构建使用数据访问技术的基于spring的应用程序变得更加容易。

实现应用程序的数据访问层已经很麻烦了。为了执行简单的查询、分页和审计,必须编写太多的样板代码。Spring Data JPA的目标是通过减少实际需要的工作量来显著改进数据访问层的实现。作为开发人员,您编写存储库接口,包括自定义查找器方法,Spring将自动提供实现。

Spirng-Data-JPA:

Spirng-Data:是用来简化基于Spring构建的应用程序的持久层框架的框架。可以理解为简化了持久层方案的方案。SpringData有很多子模块,其中SpringDataJPA就是其中一个很不错的子模块。按照约定好的写Dao层接口,就可以在不写接口实现的情况下,实现对数据库的访问和操作。同时提供了很多除了CRUD之外的功能,如分页、排序、复杂查询等等。

Data:数据

JPA(Java Persistence API):   即Java持久化API,是SUN公司推出的一套基于ORM的规范,内部是由一系列的接口和抽象类构成(不干活)。JPA通过JDK 5.0注解描述对象-关系表的映射关系,并将运行时的实体对象持久化到数据库中。(可以理解为是规范)

API:用来操作实体对象,执行CRUD操作,框架在后台替代我们完成所有的事情,开发者从繁琐的JDBC和SQL代码中解脱出来。

ORM(Object-Relational Mapping) 表示对象关系映射。在面向对象的软件开发中,通过ORM,就可以把对象映射到关系型数据库中。只要有一套程序能够做到建立对象与数据库的关联,操作对象就可以直接操作数据库数据,就可以说这套程序实现了ORM对象关系映射。 

Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。

JPA、Hiberate、Spring-data-jpa三者之间的关系

JPA是ORM规范,jpa是对Hibernate、TopLink的封装(mybatis是半自动的orm框架,spring data jpa不对其封装),这样的好处是开发者可以面向JPA规范进行持久层的开发,而底层的实现(Hibernate对数据库进行操作)则是可以切换的。Spring Data Jpa则是在JPA之上添加另一层抽象(Repository层的实现),极大地简化持久层开发及ORM框架切换的成本。

Spirng-Data-JPA优点

零配置,使用简单。

简化了我们的持久层开发工作,可以让我们持久层不用去书写具体实现代码,直接写一个继承Repository接口的Dao接口,然后开启JPA的注解扫描就可以进行持久层开发了(开启注解后,会自动扫描所有继承了Repository接口的子接口或者子实现,并自动将它交给Spring去进行管理,可以说是很好的与Spring整合)。SpringDataJPA提供了一些常用的ACID(数据库事务正确执行的四个要素基本缩写)抽象方法,我们可以直接拿来使用,此外,在这些抽象方法不够使用的时候,还提供了属性表达式、命名查询、Query注解等方式供我们使用.。

此外SpringDataJPA简化了分页的业务处理,它的Repository接口实现了PagingAndSortingRepository接口,我们要做的只是将相关数据封装到PagingAndSortingRepository接口中的findAll()方法中,它自动给我们返回Page对象,我们可以针对返回的Page对象根据我们的需求自动解析并封装成我们想要的JSON数据

总结:

springdata是spring的子框架,而springdatajpa是springdata中的子项目。springdatajpa专门对jpa进行了封装,使用springdatajpa的好处:

零配置,使用简单。

简化了我们的持久层开发工作,可以让我们持久层不用去书写具体实现代码,直接写一个继承Repository接口的Dao接口,然后开启JPA的注解扫描就可以进行持久层开发了SpringDataJPA了分页的业务处理,它的Repository接口实现了PagingAndSortingRepository接口,我们要做的只是将相关数据封装到PagingAndSortingRepository接口中的findAll()方法中,它自动给我们返回Page对象,我们可以针对返回的Page对象根据我们的需求自动解析并封装成我们想要的JSON数据

  1. 与jpa和hibernate一样,可以跨数据库产品兼容(只需要配置方言就可以)
  2. Dao只需要写接口,不写实现类了
  3. 用法非常简单。


版权声明:本文为m0_50052896原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。