9. SpringBoot - JPA 에 Pageable 사용하여 페이징 처리

JJo·2021년 6월 9일
0

React + SpringBoot

목록 보기
10/12

시작

웹 개발시 PaginationSorting 처리를 많이 하게됩니다.
실제로 구현 하려면 손이 많이 가게 됩니다.

JPAPageable 를 이용하면 쉽게 간단한 페이징 처리를 만들 수 있습니다.

Pageable

앞서 만들었던 User Entity 를 이용해서 예제를 보여 드리도록 하겠습니다.

UserService.java

// 기존 findByName
public List<User> findByName(String name) {
        return jpaUserRepository.findByName(name);
    }
    
// Pageable 적용
public List<User> findByName(String name) {
        Pageable pageable = PageRequest.of(0,3);
        return jpaUserRepository.findByName(name,pageable);
    }

Pageablespringframework.data.domain.Pageable 를 사용합니다.
PageRequest.of(int page, int size, sort) 를 통해서 PageRequest 를 생성해 줍니다.
page : 요청하는 페이지 번호
size : 한 페이지 당 조회할 크기 (기본값 : 20)
sort : Sorting 설정 (기본값 : 오름차순)

그다음, JPA Repository로 pageable 를 인자로 넘겨주시면 JPA에서 자동으로 처리가 되어 query를 만들어 생성해 줍니다.

JpaRepository.java

// 기존
List<User> findByName(String name);

// Pageable 적용
List<User> findByName(String name, Pageable pageable);

JpaRepository 는 이렇게 변경 해주시면 됩니다.

Sorting

다음은 Pageable 를 통해 Sorting 까지 해봅시다.

기존 코드에서 Sorting 옵션만 넣어주면 간단하게 구현 할 수 있습니다.

Pageable pageable = PageRequest.of(0,3, Sort.Direction.DESC,name);
Pageable pageable = PageRequest.of(0,3, Sort.by("name").descending());
Pageable pageable = PageRequest.of(0,3, Sort.by("name").descending().and(Sort.by("id")));

PageRequest.of(page, size, Sorting, properties)
마지막 인자 값으로 적용시키고 싶은 properties 이름을 적어 주시면 됩니다.

마침

Pageable 를 이용해서 간단한 페이징처리를 하여 사용해 봅시다!

profile
안녕하세용!!!

1개의 댓글

comment-user-thumbnail
2021년 12월 28일

react + spring boot라길래 왓는데... 아쉽네요...

답글 달기