웹 개발시 Pagination
과 Sorting
처리를 많이 하게됩니다.
실제로 구현 하려면 손이 많이 가게 됩니다.
JPA
와 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);
}
Pageable
은 springframework.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
는 이렇게 변경 해주시면 됩니다.
다음은 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
이름을 적어 주시면 됩니다.
react + spring boot라길래 왓는데... 아쉽네요...