BE/Spring & Spring Boot

[Spring Boot] List<Sort.Order>와 Sort.Order.desc()

baek-dev 2025. 1. 17. 18:32

 

 

 

 

출처 : ChatGPT

Spring Data JPA 또는 Spring에서 정렬을 설정할 때 사용되는 코드. 주로 데이터베이스에서 데이터를 정렬하여 가져오기 위한 요청을 만들 때 활용된다


구조 설명

1. Sort 클래스:

  • Spring Data JPA에서 제공하는 클래스.

  • 정렬 조건(오름차순, 내림차순)을 정의할 때 사용.

  • 여러 컬럼에 대한 정렬 기준을 설정할 수 있다.

2. Sort.Order 클래스:

  • 단일 정렬 조건(컬럼 이름과 방향)을 정의한다.

  • 정렬 방향:

  • Sort.Order.asc() → 오름차순 정렬.

  • Sort.Order.desc() → 내림차순 정렬.


List<Sort.Order> sorts = new ArrayList<>();
sorts.add(Sort.Order.desc("columnName"));
Sort sort = Sort.by(sorts);

 

각 부분의 의미

1. List<Sort.Order> sorts = new ArrayList<>();

정렬 조건을 담는 리스트를 생성한다.

여러 정렬 기준을 정의할 수 있도록 리스트를 사용한다.

2. sorts.add(Sort.Order.desc("columnName"));

Sort.Order.desc()를 사용해 특정 컬럼(columnName)에 대한 내림차순 정렬 조건을 추가한다.

3. Sort sort = Sort.by(sorts);

리스트로 정의된 정렬 조건을 Sort 객체로 변환한다.

이 객체는 Spring Data JPA에서 사용하는 정렬 조건으로 활용된다.


전체 예제: JPA에서 사용하기

import org.springframework.data.domain.Sort;

public class Example {
    public static void main(String[] args) {
        List<Sort.Order> sorts = new ArrayList<>();
        
        // 내림차순 정렬 조건 추가
        sorts.add(Sort.Order.desc("columnName1"));
        
        // 오름차순 정렬 조건 추가
        sorts.add(Sort.Order.asc("columnName2"));
        
        // Sort 객체 생성
        Sort sort = Sort.by(sorts);

        // 예: JPA Repository에서 사용
        // myRepository.findAll(sort);
    }
}

 

JPA Repository에서 활용

Pageable pageable = PageRequest.of(0, 10, Sort.by(
    Sort.Order.desc("createdAt"), // `createdAt` 기준 내림차순
    Sort.Order.asc("title")       // `title` 기준 오름차순
));

List<Entity> entities = myRepository.findAll(pageable).getContent();

정리

Sort.Order는 특정 컬럼과 정렬 방향(ASC, DESC)을 설정하기 위한 클래스.

Sort.Order.desc("columnName")은 해당 컬럼을 내림차순으로 정렬하겠다는 의미.

여러 정렬 조건을 리스트에 추가한 후 Sort 객체로 변환하여 JPA 쿼리에 활용할 수 있다.

'BE > Spring & Spring Boot' 카테고리의 다른 글

[Spring Boot] MockMvc  (0) 2025.01.20
[Spring Boot] Specification과 QueryDSL  (1) 2025.01.18
[Spring Boot, JPA] EntityManager  (1) 2025.01.16
[Spring Boot] @ControllerAdvice  (0) 2025.01.09
[Spring Boot] PSA  (0) 2025.01.05