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体系,实现一组JPACriteria 查询相关的方法