오늘 Spring Data에서 제공하는 페이징과 정렬을 위한 두 가지 유용한 어노테이션인
`@PageableDefault` 와 `@SortDefault` 에 대해 알게 되었다.
이 어노테이션들은 컨트롤러 메서드에서 페이징과 정렬 기능을 쉽게 구현할 수 있게 해주는 도구다.
1. `@PageableDefault`
Pageable 객체의 기본값을 설정하는 데 사용된다.
1 - 1. 주요 속성
- size: 페이지당 항목 수 (기본값: 10)
- page: 시작 페이지 번호 (기본값: 0)
예시
@PageableDefault(size = 20, page = 0)
2. `@SortDefault`
정렬 기준의 기본값을 설정하는 데 사용된다.
2 - 1. 주요 속성
- sort: 정렬할 필드명
- direction: 정렬 방향 (ASC 또는 DESC)
예시
@SortDefault(sort = "createdAt", direction = Sort.Direction.DESC)
이 어노테이션들을 사용하면 클라이언트가 별도의 정렬이나 페이징 파라미터를 제공하지 않았을 때
적용될 기본값을 쉽게 설정할 수 있다.
또한, 클라이언트가 쿼리 파라미터로 페이징이나 정렬 옵션을 전달하면 그 값이 우선적으로 적용된다.
예를 들어, 다음과 같이 컨트롤러 메서드를 작성할 수 있다.
@GetMapping("/posts")
public Page<Post> getPosts(@PageableDefault(size = 5)
@SortDefault(sort = "createdAt", direction = Direction.DESC)
Pageable pageable,) {
return postService.findAll(pageable);
}
이렇게 설정하면 기본적으로 최신 글 5개씩 페이징되어 조회되며,
클라이언트는 ?page=1&size=20&sort=name,asc 과 같은 쿼리 파라미터로 지정해줄 수 있다.
sort 에서 주의할 점은 속성명과 정렬 방향 사이에 공백이 없어야 한다.
'자바 심화 2기' 카테고리의 다른 글
Spring Dozen - 물류 관리 시스템 - MSA 기반 플랫폼 (0) | 2024.12.19 |
---|---|
CodeBloom - AI를 활용한 주문 관리 플랫폼 프로젝트 결과물 (1) | 2024.11.19 |
2024 11 13 TIL - QueryDSL, BooleanExpression (1) | 2024.11.13 |
2024 11 12 TIL - 회원가입하려는데 왜 자꾸 인증하라고 그러는걸까? (Feat. AuditorAware) (0) | 2024.11.12 |
2024 11 11 TIL - AuditorAware 구현하기 (2) | 2024.11.11 |