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
반응형
'개발중 > Spring' 카테고리의 다른 글
RepackageMojo 이란 ? (0) | 2023.04.04 |
---|---|
org.apache.maven.plugins 빨간줄 뜨며 에러가 난다면 ? 😈👿 (0) | 2023.04.04 |
[스프링] TDD(Test-Driven Development) 필요한 이유와 방법론에 대해 (0) | 2023.03.18 |
Spring 프로젝트에서 A DB 와 B DB 커넥션 맺어서 사용하려고 하는데 패키지명과 패키지 구조를 어떻게 잡아야할지 고민이야. (0) | 2023.03.17 |
[Spring] 다이나믹 프록시(dynamic Proxy) (0) | 2023.03.04 |