728x90
- 스프링 데이터 JPA는 쿼리 메소드에 페이징과 정렬 기능을 사용할 수 있도록 2가지 특별한 파라미터를 제공한다.
- org.springframework.data.domain.Sort: 정렬 기능
- org.springframework.data.domain.Pageable: 페이징 기능(내부에 Sort 포함)
- 파라미터에 Pageable을 사용하면 반환 타입으로 List나 org.springframework.data.domain.Page를 사용할 수 있다.
- Page를 사용하면 스프링 데이터 JPA는 페이징 기능을 제공하기 위해 검색된 전체 데이터 건수를 조회하는 count 쿼리를 추가로 호출한다.
//count 쿼리 사용
Page<Member> findByName(String name, Pageable pageable);
//count 쿼리 사용 안 함
List<Member> findByName(String name, Pageable pageable);
List<Member> findByName(String name, Sort sort);
페이징과 정렬을 사용하는 예제 코드
- 검색 조건: 이름이 김으로 시작하는 회원
- 정렬 조건: 이름으로 내림차순
- 페이징 조건: 첫 번째 페이지, 페이지당 보여줄 데이터는 10건
public interface MemberRepository extends Repository<Member, Long> {
Page<Member> findByNameStartingWith (String name, Pageable pageable);
}
//페이징 조건과 정렬 조건 설정
PageRequest pageRequest = new PageRequest(0, 10, new Sort(Direction.DESC, "name"));
Page<Member> result = memberRepository.findByNameStartingWith("김", pageRequest);
List<Member> members = result.getContent(); //조회된 데이터
int totalPages = result.getTotalPages(); //전체 페이지 수
boolean hasNextPage = result.hasNextPage(); //다음 페이지 존재 여부
출처 : JAVA 표준 ORM JPA 프로그래밍 (저자 : 김영한)
728x90
'SpringDataJPA' 카테고리의 다른 글
@Query 와 파라미터 바인딩 (0) | 2022.06.21 |
---|---|
JPA Named Query(메소드 이름으로 JPA Named 쿼리 호출) (0) | 2022.06.20 |
스프링 데이터 JPA 설정 (0) | 2022.06.20 |
스프링 데이터 JPA 소개(부재 - 편리한 개발) (0) | 2022.06.19 |