SpringData入门(三)SpringData JPA接口继承结构及原理分析

前言

      本章讲解SpringData JPA接口继承结构及原理分析

方法

1.回顾

我们回顾一下上个章节中我们对dao层接口的编写方式:

我们直接继承了一个名字为JpaRepository的接口,那么这个接口有什么名堂呢?这将是下面分析的重点。

2.接口继承结构

我们来看一下JpaRepository接口的结构,它将从父接口继承的方法做了返回值的适配工作:

public interface JpaRepository<T, ID> extends PagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T>

再看一下它的结构继承结构:

我们首先来看一下Repository接口,该接口下没有任何的方法,只是起到了标识的作用,和JDK中的Serializable类似

public interface Repository<T, ID>

接下来,我们观察一下其子接口CrudRepository,它提供了对数据库的CRUD操作

public interface CrudRepository<T, ID> extends Repository<T, ID>

然后看一下PagingAndSortingRepository接口,它提供了相关的分页和排序功能:

public interface PagingAndSortingRepository<T, ID> extends CrudRepository<T, ID>

说了这么多,不知道大家有没有仔细的观察,上面列举的方法在查询上几乎都是查询全部!!!

如果说我们需要细粒度更小的查询呢?那么上面的findAll将无能为力!

为了解决这个问题,我们的JpaRepository接口还继承了另外一个接口,那就是QueryByExampleExecutor<T>接口,该接口可以增强我们JpaRepository接口的查询能力,丰富了查询功能!

3.JpaRepository底层运行原理

不知道大家有没有想过这样一个问题:

我的UserDAO直接继承了JpaRepository接口,那么我没有写实现类啊!那我调用方法总不可能实例化接口吧!

显然,其肯定是有实现类的哦!

观察JpaRepository接口实现类:

显然,我们这个SimpleJpaRepository类正是我们想要的实现类。

我们通过代码进一步证实一下:

经过测试,我们的UserDAO接口注入的实现类确实为SimpleJpaRepository。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值