페이지네이션 사용

우선, 해당 글에서는 두 가지 방식으로 무한 스크롤을 적용해 볼 것이다.

  1. JPA Pagination을 사용하여 page number와 page size를 이용하기
  2. JPA Pagination을 이용하되 약간의 성능개선을 위해 page number는 0으로 고정하기

두 방식 모두 Pagination을 사용하는 방식인데 그 차이는 무엇일까?

(결과는 맨 아래로 내리면 있슴돵~ ^^)

1. JPA Pagination을 사용하여 page number와 page size를 이용하기

1번 방식은 페이징 방식과 동일하다. 클라이언트로부터 스크롤 시 조회할 paging관련 정보를 받아와서 페이징 조회를 하면 된다.

그렇다면 이 페이징 조회의 원리는 무엇일까?

위 문장에서 언급한 paging관련 정보란 페이지 번호와 페이지 크기를 말한다.

클라이언트로부터 전달받은 페이지번호와 페이지 크기를 이용해서 offset과 limit을 구하게 된다.

offset: 실제 데이터를 검색하기 위한 기준이 되는 데이터 개수를 의미하기도 한다.

limit: offset으로부터 몇 개의 데이터를 조회할 것인지 그 최대 개수를 의미한다. (limit보다 적은 데이터가 있다면, 그만큼 조회하게 된다.)

e.g) 1번 데이터부터 조회한다는 가정 하, 페이지 크기가 5이면서, offset이 10이라면?

==> 10번째 데이터부터 5개의 데이터를 읽는다.

위 방식의 큰 문제는 offset으로 인한 불필요한 탐색이다.

만약 offset이 백만이라고 가정하면 100만 개의 데이터를 탐색한 후에서야 그다음 유의미한 데이터들을 조회할 수 있는 것이다.