之前我们学习的Repository都是Spring-Data为了兼容NoSQL而进行的一些抽象封装,从JpaRepository开始是对关系型数据库进行抽象封装。JpaRepository位于spring-data-jpa项目下的repository包中,
继承了PagingAndSortingRepository和QueryByExampleExecutor接口,因此也就拥它们的全部方法。并且将默认实现的查询结果变成了List。并且新增了刷新更改到数据库、保存并刷新、批量删除等方法。使用方
法同之前的Repository一样我们直接继承它就好了,JpaRepository也是我们最常继承的接口。

@NoRepositoryBean //不要生成该类的代理类
public interface JpaRepository<T, ID> extends PagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T> { /*
* 重写父接口CrudRepository的方法,将查询结果由Iterable变成List。
*/
@Override
List<T> findAll(); /*
* 重写父接口PagingAndSortingRepository的方法,将查询结果由Iterable变成List。
*/
@Override
List<T> findAll(Sort sort); /*
* 重写父接口CrudRepository的方法,将查询结果由Iterable变成List。
*/
@Override
List<T> findAllById(Iterable<ID> ids); /*
* 重写父接口CrudRepository的方法,将查询结果由Iterable变成List。
*/
@Override
<S extends T> List<S> saveAll(Iterable<S> entities); /**
* 新增方法:刷新挂起的更改到数据库。
*/
void flush(); /**
* 新增方法:保存实体并立即刷新更改。
*/
<S extends T> S saveAndFlush(S entity); /**
* 新增方法:批量删除给定实体。
*/
void deleteInBatch(Iterable<T> entities); /**
* 新增方法:批量删除所有。
*/
void deleteAllInBatch(); /**
* 返回对具有给定标识符的实体的引用。根据JPA提供商的实现方式,这很可能总是返回一个实例,
* 并在第一次访问时抛出javax.persistence.EntityNotFoundException。其中一些会立即拒绝无效的标识符。
*/
T getOne(ID id); /*
* 重写父接口QueryByExampleExecutor的方法,将查询结果由Iterable变成List。
*/
@Override
<S extends T> List<S> findAll(Example<S> example); /*
* 重写父接口QueryByExampleExecutor的方法,将查询结果由Iterable变成List。
*/
@Override
<S extends T> List<S> findAll(Example<S> example, Sort sort);
}
源码地址:https://github.com/caofanqi/study-spring-data-jpa

学习Spring-Data-Jpa(七)---JpaRepository的更多相关文章

  1. 学习Spring Data JPA

    简介 Spring Data 是spring的一个子项目,在官网上是这样解释的: Spring Data 是为数据访问提供一种熟悉且一致的基于Spring的编程模型,同时仍然保留底层数据存储的特​​殊 ...

  2. 学习-spring data jpa

    spring data jpa对照表 Keyword Sample JPQL snippet And findByLastnameAndFirstname - where x.lastname = ? ...

  3. 【Spring Data 系列学习】了解 Spring Data JPA 、 Jpa 和 Hibernate

    在开始学习 Spring Data JPA 之前,首先讨论下 Spring Data Jpa.JPA 和 Hibernate 之前的关系. JPA JPA 是 Java Persistence API ...

  4. 一步步学习 Spring Data 系列之JPA(二)

    继上一篇文章对Spring Data JPA更深( )一步剖析. 上一篇只是简单的介绍了Spring Data JPA的简单使用,而往往在项目中这一点功能并不能满足我们的需求.这是当然的,在业务中查询 ...

  5. Spring Data Jpa 入门学习

    本文主要讲解 springData Jpa 入门相关知识, 了解JPA规范与Jpa的实现,搭建springboot+dpringdata jpa环境实现基础增删改操作,适合新手学习,老鸟绕道~ 1. ...

  6. Spring Data JPA 学习记录1 -- 单向1:N关联的一些问题

    开新坑 开新坑了(笑)....公司项目使用的是Spring Data JPA做持久化框架....学习了一段时间以后发现了一点值得注意的小问题.....与大家分享 主要是针对1:N单向关联产生的一系列问 ...

  7. Spring Data JPA教程, 第七部分: Pagination(未翻译)

    The previous part of my Spring Data JPA tutorialdescribed how you can sort query results with Spring ...

  8. spring data jpa入门学习

    本文主要介绍下spring data jpa,主要聊聊为何要使用它进行开发以及它的基本使用.本文主要是入门介绍,并在最后会留下完整的demo供读者进行下载,从而了解并且开始使用spring data ...

  9. spring boot学习(4) SpringBoot 之Spring Data Jpa 支持(1)

    第一节:Spring Data Jpa 简介 Spring-Data-Jpa JPA(Java Persistence API)定义了一系列对象持久化的标准,目前实现这一规范的产品有Hibernate ...

  10. Spring Data JPA中CrudRepository与JpaRepository的不同

    使用Spring Data JPA CrudRepository 和JpaRepository 的好处: 继承这些接口,可以使Spring找到自定义的数据库操作接口,并生成代理类,后续可以注入到Spr ...

随机推荐

  1. 二、SpringBoot基础配置

    目录 2.1 @SpringBootApplication 2.3 服务器配置 2.4 修改启动banner 小结 2.1 @SpringBootApplication 从上篇文章中知道@Spring ...

  2. 【LEETCODE】48、数组分类,简单级别,题目:189,217,219,268,283,414

    package y2019.Algorithm.array; import java.util.Arrays; import java.util.Stack; /** * @ClassName Rot ...

  3. R学习笔记2 因子

    特殊值: 缺失值 NA(Not Avaiable),是不可用的缩写: NaN为“不是一个数”,意味着计算没有数学意义: NULL值,空值,表示一个空的变量,不会占用任何空间,通过is.null(x)来 ...

  4. jvm堆内存模型原理分析及堆内存分析工具jhat和MAT的使用超详细教程

  5. spring-data-jpa模糊查询

    记录一条关于spring-data-jpa模糊查询的语句 方法一: @Query(value="select * from search_key a where a.key_name lik ...

  6. Matlab M文件变量检测与传递

    M文件中变量的检测与传递 可变数量的输入输出变量(varargin,vararout): Matlab的输入输出变量数量可变,并具有以下特点: 可变输入输出变量必须在正常变量之后 varargin和v ...

  7. iOS自动签名网站

    node.js作为服务端,调用shell脚本进行iOS包重签名. 需要安装:nodejs ,forever 安装环境: 安装nodejs 安装forever: npm install forever ...

  8. HTML表格跨行、跨列操作(rowspan、colspan)

    转自:https://blog.csdn.net/u012724595/article/details/79401401 一般使用<td>元素的colspan属性来实现单元格跨列操作,使用 ...

  9. ArrayList集合实现RandomAccess接口有何作用?为何LinkedList集合却没实现这接口

    详见:https://blog.csdn.net/weixin_39148512/article/details/79234817 众所周知,在List集合中,我们经常会用到ArrayList以及Li ...

  10. M - Ordering Tasks(拓扑排序)

    M - Ordering Tasks Time Limit:3000MS     Memory Limit:0KB     64bit IO Format:%lld & %llu Descri ...