repository全貌梳理
先看下Repository相关的项目心场类图:
整体类图虽然咋看上去很庞杂,但其实主线脉络还是中核比较清晰的。
- 先看下蓝色的景进阶用部分其实就是Repository的一整个接口定义链条 ,而橙色的法介则是我们自己自定义的一些Repository接口类
,继承父层接口的项目心场所有已有能力。
- 左侧的中核类图与接口,其实都是景进阶用JPA提供的一些用于实现或者定制查询操作的一些辅助实现类 ,后面章节中会看到他们的法介身影 。
对主体repository层级提供的项目心场主要方法进行简单的梳理,如下:
下面对各个repository接口进行简单的独立介绍。
JpaRepository与它的景进阶用父类们
- Repository 位于 Spring Data Common 的lib里面
,是法介Spring Data 里面做数据库操作的最底层的抽象接口 、最顶级的项目心场父类,源码里面其实什么方法都没有,中核仅仅起到一个标识作用 。景进阶用
- CrudRepository 作为直接继承 Repository 的次顶层接口类,看名字也可以大致猜测出其主要作用就是封装提供基础CRUD操作 。
- PagingAndSortingRepository 继承自 CrudRepository ,自然也就具备了 CrudRepository 提供的全部接口能力
。此外 ,从其自身新提供的接口来看,增加了排序和分页查询列表的能力,非常符合其类名的含义 。
JpaRepository 与其前面的几个父类相比是个特殊的存在,其中补充添加了一组JPA规范的接口方法。前面的几个接口类都是Spring Data为了兼容NoSQL而进行的一些抽象封装(因为SpringData项目是一个庞大的家族,支持各种SQL与NoSQL的数据库,SpringData JPA是SpringData家族中面向SQL数据库的一个子分支项目)
,从 JpaRepository 开始是对关系型数据库进行抽象封装。