自学Spring Boot的时候看到书上在介绍Spring Data JPA的时候,用的是JpaRepository接口,但看很多的博客用的是CrudRepository,为了搞明白两者的关系,决定好好研究下,先看下两者的接口代码:
@NoRepositoryBean
public interface CrudRepository<T, ID extends Serializable> extends Repository<T, ID> {
<S extends T> S save(S var1);
<S extends T> Iterable<S> save(Iterable<S> var1);
T findOne(ID var1);
boolean exists(ID var1);
Iterable<T> findAll();
Iterable<T> findAll(Iterable<ID> var1);
long count();
void delete(ID var1);
void delete(T var1);
void delete(Iterable<? extends T> var1);
void deleteAll();
}
@NoRepositoryBean
public interface JpaRepository<T, ID extends Serializable> extends PagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T> {
List<T> findAll();
List<T> findAll(Sort var1);
List<T> findAll(Iterable<ID> var1);
<S extends T> List<S> save(Iterable<S> var1);
void flush();
<S extends T> S saveAndFlush(S var1);
void deleteInBatch(Iterable<T> var1);
void deleteAllInBatch();
T getOne(ID var1);
<S extends T> List<S> findAll(Example<S> var1);
<S extends T> List<S> findAll(Example<S> var1, Sort var2);
}
看一下他们的继承关系
事实上,CrudRepository和PagingAndSortingRepository由Spring Data提供;JpaRepository 由Spring Data JPA提供,而Spring Data JPA又是Spring Data的一个子项目,这就是两者的关系。通常,最好的想法是使用 CrudRepository 或 PagingAndSortingRepository, 具体取决于是否需要排序和分页。如果可能,应该避免使用 JpaRepository ,因为它将存储库与JPA持久性技术联系起来,并且在大多数情况下,我们甚至可能不会使用它提供的额外方法。
参考:
http://makaidong.com/youhan26/1/976_10156939.html
标签:var1,Spring,void,Boot,CrudRepository,List,findAll,Iterable From: https://blog.51cto.com/u_6947107/7594394