본문 바로가기

개발중/Spring

[Spring] org.springframework.data.domain의 PageImpl 과 Page<T> 에 대해서

728x90
반응형
org.springframework.data.domain.Page<T>
org.springframework.data.domain.PageImpl

두 클래스가 궁굼했다.


org.springframework.data.domain.Page<T>

Page<T>는 인터페이스로, 분할된 데이터 집합을 나타냅니다. 

이 인터페이스는 페이징 및 정렬 기능을 제공하며 일반적인 페이지 처리 작업에 사용됩니다.

장점

  • 추상화된 인터페이스로, 여러 구현체를 제공할 수 있어 유연성이 있습니다.
  • 애플리케이션 전반에 걸쳐 일관된 페이징 처리를 위해 사용할 수 있는 표준 인터페이스입니다.

단점

  • 인터페이스이므로 직접 인스턴스화하거나 사용할 수 없습니다. 대신 구현 클래스를 사용해야 합니다.

 

org.springframework.data.domain.PageImpl

PageImpl은 Page<T> 인터페이스의 구현 클래스입니다. 

이 클래스는 인터페이스에서 정의한 모든 기능을 구현하며 페이지 처리 작업을 수행합니다.

장점

  • Page<T> 인터페이스를 구현하는 실제 클래스로, 개발자가 직접 사용할 수 있습니다.
  • 대부분의 페이징 작업에 대한 구현이 제공되므로, 개발자가 별도의 구현을 작성할 필요가 없습니다.

단점

  • PageImpl은 구체적인 클래스이므로 다른 구현으로 교체하거나 확장하는 것이 덜 유연할 수 있습니다.

 

차이점

org.springframework.data.domain.Page<T>는 페이지 처리를 위한 일반적인 인터페이스이며,  다양한 구현을 사용할 수 있는 유연성을 제공합니다.

org.springframework.data.domain.PageImpl은 Page<T> 인터페이스의 구현체로, 실제 페이징 작업을 수행하며 대부분의 경우에 사용할 수 있는 구현을 제공합니다. 

하지만 다른 구현으로 교체하거나 확장하기 어려울 수 있습니다.

대부분의 경우에는 Page<T> 인터페이스를 사용하는 것이 좋습니다.

이를 통해 애플리케이션 전반에 걸쳐 일관된 페이징 처리를 수행할 수 있으며, 필요한 경우 다른 구현으로 교체할 수 있는 유연성을 얻을 수 있습니다. 

PageImpl을 사용하면 특정 구현에 종속되어 유연성이 떨어질 수 있습니다.

 

728x90
반응형