Spring Boot中CrudRepository与JpaRepository

自学Spring Boot的时候看到书上在介绍Spring Data JPA的时候,用的是JpaRepository接口,但看很多的博客用的是CrudRepository,为了搞明白两者的关系,决定好好研究下,先看下两者的接口代码:

 

@NoRepositoryBean
public interface CrudRepository extends Repository {
     S save(S var1);
     Iterable save(Iterable var1);
    T findOne(ID var1);
    boolean exists(ID var1);
    Iterable findAll();
    Iterable findAll(Iterable var1);
    long count();
    void delete(ID var1);
    void delete(T var1);
    void delete(Iterable var1);
    void deleteAll();
}
@NoRepositoryBean
public interface JpaRepository extends PagingAndSortingRepository, QueryByExampleExecutor {
    List findAll();
    List findAll(Sort var1);
    List findAll(Iterable var1);
     List save(Iterable var1);
    void flush();
     S saveAndFlush(S var1);
    void deleteInBatch(Iterable var1);
    void deleteAllInBatch();
    T getOne(ID var1);
     List findAll(Example var1);
     List findAll(Example var1, Sort var2);
}

看一下他们的继承关系

Spring Boot中CrudRepository与JpaRepository_第1张图片

事实上,CrudRepository和PagingAndSortingRepository由Spring Data提供;JpaRepository 由Spring Data JPA提供,而Spring Data JPA又是Spring Data的一个子项目,这就是两者的关系。通常,最好的想法是使用  CrudRepository  或  PagingAndSortingRepository,  具体取决于是否需要排序和分页。如果可能,应该避免使用 JpaRepository ,因为它将存储库与JPA持久性技术联系起来,并且在大多数情况下,我们甚至可能不会使用它提供的额外方法。

 

参考:

https://blog.csdn.net/zgf19930504/article/details/50537222

https://blog.csdn.net/strive_peter/article/details/76276758

https://blog.csdn.net/hikeboy/article/details/58597053

http://makaidong.com/youhan26/1/976_10156939.html

 

你可能感兴趣的:(SpringBoot)