Pagination

Tin9oo·2024년 2월 27일

1. Pagination이란?

Pagination은 대량의 데이터를 페이지 단위로 나누어 표시하는 기술로, 웹 애플리케이션에서 데이터의 부하를 줄이고 사용자 경험을 향상시키는 데 사용됩니다. 보통 대용량의 데이터를 한 번에 모두 표시하는 것은 성능을 저하시키며, 사용자는 모든 데이터를 한 번에 볼 필요가 없을 수 있습니다. Pagination은 이러한 문제를 해결하기 위해 데이터를 여러 페이지로 나누어 보여주는 방법을 말합니다.

2. Pagination 구현 방식

Pagination은 주로 다음과 같은 구현 방식을 사용합니다.

1. Offset-based Pagination (Offset 기반 페이지네이션)

  • 데이터베이스에서 일정한 수의 데이터를 건너뛰고(offset) 가져오는 방식입니다.
  • 주로 LIMITOFFSET을 사용하여 구현됩니다.
  • 대량의 데이터를 처리할 때 성능 문제가 발생할 수 있으므로, 큰 데이터셋에서는 지양하는 것이 좋습니다.

2. Key-based Pagination (키 기반 페이지네이션)

  • 이전 페이지와 다음 페이지를 식별하는 데 사용되는 고유한 키(예: 마지막 데이터의 ID)를 기반으로 페이지를 나누는 방식입니다.
  • 대량의 데이터에서는 Offset-based Pagination보다 성능이 우수하며, 데이터가 추가되거나 삭제되어도 일관된 결과를 보장합니다.

3. Limit/Offset with Total Count (총 개수 포함 Offset 기반 페이지네이션)

  • 페이지 결과를 제공하는 동시에 전체 항목 수를 반환하는 방식입니다.
  • 대부분의 경우, 전체 항목 수를 계산하는 데 추가 비용이 발생할 수 있습니다.

3. 구현한 Pagination 방식

1. AdminRepositoryImpl 클래스의 findAccounts 메서드

  • Pageable 인터페이스를 이용하여 페이지네이션을 설정합니다.
  • offset()limit() 메서드를 사용하여 페이지 오프셋과 크기를 설정합니다.
  • 데이터를 조회할 때, 해당 오프셋(offset)부터 시작하여 지정된 페이지 크기만큼의 데이터를 가져옵니다.
  • fetchCount()를 사용하여 전체 항목 수를 가져옵니다.

2. AdminController 클래스의 searchAllAccounts 메서드

  • HTTP GET 요청을 처리하고, 클라이언트에서 전달된 페이지 번호와 관련된 파라미터를 받아옵니다.
  • 받아온 파라미터를 이용하여 AdminRepositoryImplfindAccounts 메서드를 호출하여 해당 페이지의 데이터를 조회합니다.
  • 조회된 데이터와 함께 페이지 정보를 PageResponseDto를 이용하여 응답합니다.

4. 결론

Pagination은 대량의 데이터를 처리하는 웹 애플리케이션에서 필수적인 기능으로, 성능 향상과 사용자 경험 개선에 중요한 역할을 합니다. Spring Data JPA와 같은 프레임워크를 사용하면 Pagination을 쉽게 구현할 수 있으며, 데이터베이스 쿼리와 클라이언트 요청을 효율적으로 처리할 수 있습니다.

profile
🚙 HMG SOFTEER 3rd | 💻 BE

0개의 댓글