Repository 接口是 SpringData 的一个核心接口,它不提供任何方法,开发者需要在自己定义的接口中声明需要的方法。
public interface Repository<T, IDextends Serializable> { }
Spring Data可以让我们只定义接口,只要遵循Spring Data的规范,就无需写实现类。
与继承Repository 等价的一种方式,就是在持久层接口上使用 @RepositoryDefinition注解,并为其指定domainClass和idClass属性。如下两种方式是完全等价的
•
基础的
Repository
提供
了最基本的数据访问功能,其几个子接口则扩展了一些功能。它们的继承关系如下:
–
Repository
:仅仅是一个标识,表明任何继承它的均为仓库接口
类
–
CrudRepository
:
继承
Repository
,实现了一
组
CRUD
相关
的方法
–
PagingAndSortingRepository
:
继承
CrudRepository
,实现了一组分页排序相关的方法
–
JpaRepository
:
继承
PagingAndSortingRepository
,实现一
组
JPA
规范
相关的方法
–
自定义的
XxxxRepository
需要继承
JpaRepository
,这样的
XxxxRepository
接口就具备了通用的数据访问控制层的能力。
–
JpaSpecificationExecutor
:
不
属于
Repository
体系,实现一
组
JPA
Criteria
查
询相关的方法