✏️ 2023-02-27 Today I Learn

@mitoconcrete · February 27, 2023 · 1 min read

paging 을 좀더 영리하게 처리하기

기존에 paging 을 page를 이용해서 처리하고 있었는데, 오늘 적용 중에 팀원으로 부터 좋은 피드백을 받았다.

  1. 먼저, 나는 size, page, isAsc, sortBy 등을 DTO로 만들어서 사용중이었다. 하지만, 굳이 DTO를 만들필요없이, Pageable을 곧바로 DTO처럼 만들어서 사용 할 수 있다는 사실을 알았다. size, page, isAsc, sortBy 중 없는것이 있으면, 자동적으로 스킵하고 pageable을 만들어서 곧바로 repository에 넘길 수 있다.
  2. page를 사용하게 되면, 가장 큰 이슈가 풀스캔을 이용해 total 레코드 수를 불러온다는 것이다. 이것은 매 페이지 요청마다 전체 레코드 수를 세는 로직을 수행함으로서, 디비에 많은 부하를 준다. JPARepository는 Page외에도 Slice, List와 같은 형태도 사용할 수 있다. 이것을 사용하게 되면, total 레코드를 사용하지 않고, 그에 따라 불필요한 count쿼리가 날라가는 것을 방지할 수 있다.
@mitoconcrete
어제보다 조금 더 성장하기 위해 기록합니다.