라벨이 [Pageable]인 게시물 표시

[Spring Boot] Pageable 커스터마이징하기

이미지
안녕하세요. 남산돈가스입니다.

지난 포스팅 [Spring Boot] JPA + Pageable 을 이용한 페이징 처리 에서 마지막 Pageable 커스터마이징에 대한 언급을 했었는데,

이번 포스팅에서 그 내용을 다루어 보려고 합니다.

일반적으로, Pageable을 파라미터로 Controller를 구현하면 Request Parameter 를 통하여 Handling 할 수 있는 파라미터는 기본적으로 page, size, sort 이렇게 세 가지 입니다.

page : 조회할 페이지 번호 (default : 0)size : 한 페이지 당 조회 갯 수 (default : 20)sort : 정렬 기준 (정렬할 기준컬럼,ASC|DESC) 위와 같은 기본 설정을 가지고 Pageable 객체를 Handling 할 수 있습니다.
하지만 만약 기존 레거시 코드에서 Pageable을 사용하는 페이징처리로 이관하는 작업을 한다고 가정하면,
웹 화면에서 요청하던 기존 레거시 페이지 요청 파라미터를 전부 수정해줘야하는 번거로움이 생기게 됩니다. 저 또한 이와 같은 상황에서 Pageable 요청 파라미터를 커스터마이징하는 방식을 먼저 생각하게 되었습니다.
예제를 보겠습니다.

@Configuration public class WebConfig implements WebMvcConfigurer { @Override public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) { SortHandlerMethodArgumentResolver sortArgumentResolver = new SortHandlerMethodArgumentResolver(); sortArgumentResolver.setSortParameter("sortBy"); sortArgumentResolver.setPropertyDelimiter(…

[Spring Boot] JPA + Pageable 을 이용한 페이징 처리

이미지
안녕하세요. 남산돈가스 입니다.

오늘은 Spring Boot JPA를 이용하여 API 개발 시 간단하게 Pagination 와 Sorting을 처리할 수 있도록 도와주는 Pageable에 대해서 알아보려고 합니다.

웹 개발 시 Pagination 과 Sorting은 필수적이라 할 수 있지만, 실제 개별적으로 구현 시 번거로운 작업이 생기기 마련입니다. 또한 각 데이터베이스마다 페이징 쿼리가 다를 수 있다는 점에서 모든 요구조건을 만족하기 어려운 부분들이 존재하기 마련입니다.

Spring Data JPA와 Pageable을 이용하면 이런 문제들을 아주 쉽게 해결할 수 있어 비즈니스 로직에 집중할 수 있게 도와줍니다.

우선 Pageable을 사용하여 얻을 수 있는 이점은 대표적으로 두 가지 입니다.
요건에 맞는 Pagination을 구현할 수 있다.정렬이 필요한 데이터를 쉽게 Sorting 할 수 있다. 예제를 들어 설명하겠습니다.

@Entity@Table(name="post") @Getter public class Post extends Audity { @Id@GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name="id") private Long id; @Column(name="title") private String title; @Column(length = 2000, name="content") private String content; @Column(length = 50, name="writer") private String writer; }
간단한 예제를 들기 위하여, "Post" 라는 Entity를 작성하였고, 예제를 위하여 약 20건의 데이터를 생성해두었습니다.

@RepositorypublicinterfacePostR…