출처 : 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 |