말 그대로 페이징, 데이터를 페이지 단위로 나눠서 보여주는 작업입니다.
이를 위해 JPA에서는 페이지 정보와 정렬 기준으로 페이징 처리를 하며 PageRequest, Pageable, Sort 객제를 사용합니다.
1
2
3
4
|
@Repository
public interface ConferenceRepository extends JpaRepository<Conference, Long> {
Page<Conference> findAll(Pageable pageable);
}
|
cs |
Repository 구성입니다.
return type을 Page 객체로 감싸줍니다.
Service에서 PageRequest 객체를 넘겨주면 Repository에서 Pageable 객체로 받습니다.
Pageable 객체에는 페이징 정보와 정렬 기준을 모두 포함하므로 전달받는 파라미터에 반드시 포함되어야합니다.
1
2
3
4
5
6
7
8
9
10
|
@Service
public class ConferenceServiceImpl implements ConferenceService {
@Override
public ConferenceFindAllGetRes findAllConference(int page, int size) {
Sort sorts = Sort.by(Sort.Direction.DESC, "id");
PageRequest pageRequest = PageRequest.of(page, size, sorts);
return ConferenceFindAllGetRes.of(conferenceRepository.findAll(pageRequest), pageRequest, sorts);
}
}
|
cs |
Repository에서는 페이징 정보를 Pageable로 받지만 Service에서 호출 시 보낼 페이징 정보는 PageRequest 객체입니다.
딱 Request만 봐도 요청 잘하게 생겼죠?
PageRequest.of(page, size, sorts);
page: 현재 페이지 (코드에서 첫 페이지는 0입니다.)
size: 페이지에서 출력할 데이터의 갯수
sorts: 정렬기준, 방법 (ex. id 기준 asc or desc)
그럼 이런식으로 정렬기준에 맞게 출력이 됩니다!
이거를 이제 findByTitle이나 findByConferenceCategoryId와 같은 메소드에도 적용할 수 있습니다
'Spring' 카테고리의 다른 글
Entity @Embeddable을 이용한 복합 키 구현 (0) | 2021.08.01 |
---|---|
Entity @IdClass를 이용한 복합 키 구현 (0) | 2021.07.29 |
Spring @RequestParam String[] 문제 (0) | 2021.07.24 |
Spring Optional.isPresent() (0) | 2021.07.15 |
Spring 기본 세팅 (STS) (0) | 2021.06.12 |