BACKEND/SPRING

Spring Data JPA 활용 - 정렬과 페이징 처리

우진하다 2023. 8. 13. 22:10

Spring Data JPA는 정렬과 페이징 처리를 간단하게 지원합니다. 
PagingAndSortingRepository를 상속받으면 기본적인 페이징과 정렬 기능을 사용할 수 있습니다.

정렬 처리하기

일반적인 쿼리문에서 정렬을 사용할 때는 ORDER BY 구문을 사용합니다.
쿼리 메서드로 정렬 기능에 동일한 키워드가 사용됩니다.

public interface UserRepository extends JpaRepository<User, Long> {

    List<User> findByNameOrderByNumberAsc(String name);
    List<User> findByNameOrderByNumberDesc(String name);
}

// 서비스나 컨트롤러에서 사용 예시
userRepository.findByName("John");

 

Spring Data JPA에서 제공하는 Sort 클래스를 사용하여 쿼리 결과를 정렬할 수 있습니다.

public interface UserRepository extends JpaRepository<User, Long> {

    List<User> findByName(String name, Sort sort);
}

// 서비스나 컨트롤러에서 사용 예시
userRepository.findByName("John", Sort.by("age").descending());

 

페이징 처리

페이징이란 데이터베이스의 레코드를 개수로 나눠 페이지를 구분하는 것을 의미합니다.
페이징 처리를 위해 Spring Data JPA에서는 Pageable 인터페이스와 Page 클래스를 제공합니다.

public interface UserRepository extends JpaRepository<User, Long> {

    Page<User> findByName(String name, Pageable pageable);
}

// 서비스나 컨트롤러에서 사용 예시
Page<User> users = userRepository.findByName("John", PageRequest.of(0, 10));