프로젝트를 완료하고, 튜터님의 피드백을 받았습니다. 다양한 피드백 중 이번 일일 회고에서는 Pageable에 대한 피드백을 정리하고자 합니다.
기존 구현 방식
원래 프로젝트에서는 각 페이징 관련 정보를 RequestParam으로 개별적으로 받아와야 했습니다. 그리고 서비스 레이어에서 PageRequest를 사용하여 페이지 요청을 처리했습니다.
피드백 반영 및 개선 사항
튜터님께서 제안하신 개선 사항에 따라, 페이징 처리와 정렬을 Pageable 객체로 한 번에 받을 수 있도록 변경하였습니다. 이렇게 하면 코드가 더 간결해지고, 유지보수도 쉬워집니다.
개선된 사항
@PageableDefault 사용
- @PageableDefault 어노테이션을 사용하여 기본 페이지 크기와 정렬 기준을 설정합니다.
- 이로 인해, 클라이언트가 요청할 때 페이지, 크기, 정렬 기준을 한 번에 설정할 수 있습니다.
Pageable객체 직접 받기
- Pageable 객체를 직접 컨트롤러 메서드의 파라미터로 받아, 개별적인 페이징 관련
RequestParam을 처리하는 대신, Spring Data JPA가 제공하는 자동 페이징 기능을 활용합니다. - Pageable 객체를 서비스 메서드에서 직접 받아, 데이터 조회 및 변환을 간결하게 처리합니다.
- PageRequest를 직접 생성하는 대신, Pageable을 매개변수로 사용하여 코드가 더 깔끔해집니다
Test 해보기
http://localhost:8080/admin/users
http://localhost:8080/admin/users?sort=id,desc
http://localhost:8080/admin/users?sort=createdAt,desc
앞선 코드에서는 page, size, sortBy, isAsc와 같은 개별적인 요청 파라미터를 받아서 페이징 처리를 구현했습니다. 그러나 이러한 정보는 모두 Pageable 객체에 포함되어 있으며, 별도로 각 정보를 수동으로 처리할 필요가 없습니다.
위 포스팅에서 알아본대로, Pageable 객체를 사용하면, 페이징 정보와 정렬 기준을 한 번에 처리할 수 있습니다.
@PageableDefault 어노테이션을 통해 기본 페이지 크기와 정렬 기준을 설정하고, Pageable 객체를 컨트롤러 메서드에서 직접 받아 사용함으로써 코드의 복잡성을 줄일 수 있습니다.
이렇게 Pageable을 활용하면 page, size, sortBy, isAsc와 같은 페이징 관련 정보를 개별적으로 받을 필요가 없으며, 모든 페이징 및 정렬 처리를 Pageable 객체를 통해 간편하게 관리할 수 있습니다.
결과적으로 코드의 가독성과 유지보수성이 크게 향상되었으며, 더 효율적인 데이터 조회가 가능해졌습니다.
'TIL,일일 회고' 카테고리의 다른 글
[TIL, 일일 회고] 2024.09.05 - 위도와 경도의 데이터 타입과 길이 (0) | 2024.09.05 |
---|---|
[TIL, 일일 회고] 2024.09.04 - Spring 심화 AI 비즈니스 검증 프로젝트 트러블 슈팅 (0) | 2024.09.04 |
[TIL, 일일 회고] 2024.09.02 - Redis 활용하여 사용자 인증 정보 캐싱하기 (0) | 2024.09.02 |
[TIL, 일일 회고] 2024.09.01 - Java 12+의 switch 표현식으로 코드 간결성 높이기 (0) | 2024.09.01 |
[TIL, 일일 회고] 2024.08.31 - @MappedSuperclass 적용하기 (0) | 2024.08.31 |