Repository 接口介绍
SpringData JPA的使用离不开Repository接口,Repository作为访问数据层的顶级接口,他没有任何实现,只是作为一种标记。
7 个大 Repository 接口:
- Repository(org.springframework.data.repository),没有暴露任何方法;
- CrudRepository(org.springframework.data.repository),简单的 Curd 方法;
- PagingAndSortingRepository(org.springframework.data.repository),带分页和排序的方法;
- QueryByExampleExecutor(org.springframework.data.repository.query),简单 Example 查询;
- JpaRepository(org.springframework.data.jpa.repository),JPA 的扩展方法;
- JpaSpecificationExecutor(org.springframework.data.jpa.repository),JpaSpecification 扩展查询;
- QueryDslPredicateExecutor(org.springframework.data.querydsl),QueryDsl 的封装。
两大 Repository 实现类:
- SimpleJpaRepository(org.springframework.data.jpa.repository.support),JPA 所有接口的默认实现类;
- QueryDslJpaRepository(org.springframework.data.jpa.repository.support),QueryDsl 的实现类。
Repository 及其他子接口的使用案例,在应用时,你需要注意不同的接口有不同的方法,根据业务场景继承不同的接口即可。
JpaRepository接口
JpaRepository是Repository的一个分水岭,上面的那些都是 Spring Data 为了兼容 NoSQL 而进行的一些抽象封装,而从 JpaRepository 开始是对关系型数据库进行抽象封装。
SimpleJpaRepository
关系数据库的所有 Repository 接口的实现类就是 SimpleJpaRepository,如果有些业务场景需要进行扩展了,可以继续继承此类。
从debug可以看出,我们项目中自定义的Repository接口最终会通过动态代理生成的实现类就是SimpleJpaRepository。