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 인터페이스를 지원한다!

 

참고자료

+ Recent posts