in spring boot 2.X.X
@NoRepositoryBean
public interface JpaRepository<T, ID> extends PagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T> {
@Override
List<T> findAll();
...
}
- 2버전 JpaRepository는 PagingAndSortingRepository, QueryByExampleExecutor을 상속한다.
in spring boot 3.X.X
@NoRepositoryBean
public interface JpaRepository<T, ID> extends ListCrudRepository<T, ID>, ListPagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T> {
...
}
@NoRepositoryBean
public interface ListCrudRepository<T, ID> extends CrudRepository<T, ID> {
<S extends T> List<S> saveAll(Iterable<S> entities);
List<T> findAll();
List<T> findAllById(Iterable<ID> ids);
}
@NoRepositoryBean
public interface ListPagingAndSortingRepository<T, ID> extends PagingAndSortingRepository<T, ID> {
List<T> findAll(Sort sort);
}
- 3버전 JpaRepository는 ListCrudRepository, ListPagingAndSortingRepository, QueryByExampleExecutor을 상속한다.
why ListXXXRepository?
일반적인 조회, 수정, 삭제 기능은 CrudRepository로도 충분하지만, CrudRepository#findAll()은 Iteratable을 반환하기 때문에, 결과물을 List로 받고싶은 경우에는 번거롭다.
- JpaRepository는 List로 받을 수 있다.
- 페이징이나 정렬 등의 추가 기능이 필요하다면 JpaRepository를 사용하면 된다.
Spring 3.X.X부터는 List로 데이터를 받을 수 있도록 ListCrudRepository 인터페이스를 지원한다!
참고자료