220927 TIL 놀랍다..! Pageable

오늘은 마카오 뱅크의 거래내역 조회 기능을 구현하다 pagination을 아주 간단하게 구현하는 유용한 기술을 발견했다.

 

pagination은 게시판 같은 데서 흔하게 볼 수 있는 개념이다.

게시글의 수가 특정 개수를 넘어가면 다음 페이지를 클릭해서 이동이 가능하게 해주게 하는 것을 pagination이라고 하는데 이전 과제에서 이 pagination을 구현해야 했던 적이 있다.

 

어려서부터 컴퓨터를 사용할 때 특정 게시글수가 넘어가면 다음 페이지가 존재하는 것은 너무나도 당연하게 여겨져 왔던 사실이라 이것도 프로그래밍해서 만들어졌다는 것을 인지하지 못하고 있었는데 과제로 주어지고 막상 만들려고 하니까 너무 어렵게 느껴졌었고 구현하기 위해 조건식 막 만들고 엄청 고생했던 기억이 난다. 근데 그 고생을 왜 했나 싶을 정도로 오늘 아주 간단하게 Pagination을 구현했다. 

 

바로 JPA의 Pageable이다.

 

Pageable을 간단하게 말하면 DB에 저장된 데이터들을 일정 개수만큼 분류해서 페이지로 나눠서 보여주는 것을 의미한다.

 

사용방법도 직접 pagination을 구현하는 것에 비하면 아주아주아주 간단하다. 

 

위의 코드 예제처럼 Pageable이라는 객체를 findAll() 메서드에 매개변수로 넘겨주면 된다.

 

이후에 PageRequest.of(int page, int size)를 이용해서 페이지 번호와 페이지당 데이터가 몇 개가 들어갈지 설정해준 후 Page타입으로 받아서 사용해주면 된다.

 

PageRequest.of(int page, int size, Sort sort) 페이지 번호, 페이지당 데이터의 수, 정렬방향
PageRequest.of(int page, int size) 페이지 번호, 페이지당 데이터의수

페이지 번호는 0부터 시작한다는 것을 알고 있으면 된다.

 

참고 : https://docs.spring.io/spring-data/jpa/docs/2.3.1.RELEASE/reference/html/#reference