地址:联系地址联系地址联系地址
电话:020-123456789
传真:020-123456789
邮箱:admin@aa.com
先看下Repository相关的项目心场类图 :
整体类图虽然咋看上去很庞杂 ,但其实主线脉络还是中核比较清晰的。
对主体repository层级提供的项目心场主要方法进行简单的梳理,如下:
下面对各个repository接口进行简单的独立介绍。
JpaRepository 与其前面的几个父类相比是个特殊的存在 ,其中补充添加了一组JPA规范的接口方法。前面的几个接口类都是Spring Data为了兼容NoSQL而进行的一些抽象封装(因为SpringData项目是一个庞大的家族 ,支持各种SQL与NoSQL的数据库 ,SpringData JPA是SpringData家族中面向SQL数据库的一个子分支项目) ,从 JpaRepository 开始是对关系型数据库进行抽象封装。
从类图可以看得出来它继承了 PagingAndSortingRepository 类,也就继承了其所有方法,并且实现类也是 SimpleJpaRepository 。从类图上还可以看出 JpaRepository 继承和拥有了 QueryByExampleExecutor 的相关方法。
通过源码和 CrudRepository 相比较 ,它支持Query By Example,批量删除 ,提高删除效率,手动刷新数据库的更改方法 ,并将默认实现的查询结果变成了List。
额外补充一句:
实际的项目编码中 ,大部分的场景中 ,我们自定义Repository都是继承 JpaRepository 来实现的。
先看个自定义Repository的例子 ,如下 :
看下对应类图结构,自定义Repository继承了JpaRepository ,具备了其父系所有的操作接口,此外,额外扩展了业务层面自定义的一些接口方法 :