개요
OrderRepositoryImpl에서 findAll(Pageable)을 호출할 때, OrderJpaRepository에 해당 메서드가 명시적으로 선언되어 있지 않아 JpaRepository.findAll(Pageable)이 사용됩니다.
이로 인해 두 가지 문제가 발생합니다.
문제점
1. 계약 위반
OrderRepository 인터페이스는 반환 타입을 Slice<Order>로 명시하고 있으나, 실제로는 Page<Order>를 반환합니다. Page는 Slice의 하위 타입이므로 컴파일 오류는 발생하지 않지만, 인터페이스 계약을 위반합니다.
2. 성능 문제
Page는 전체 레코드 수를 구하기 위해 추가적인 COUNT 쿼리를 실행합니다. 반면 Slice는 COUNT 쿼리를 실행하지 않아 더 효율적입니다.
관련 정보
대상 파일
src/main/java/com/fhsh/daitda/order/infrastructure/infrastructure/repository/OrderJpaRepository.java
src/main/java/com/fhsh/daitda/order/infrastructure/infrastructure/OrderRepositoryImpl.java
개요
OrderRepositoryImpl에서findAll(Pageable)을 호출할 때,OrderJpaRepository에 해당 메서드가 명시적으로 선언되어 있지 않아JpaRepository.findAll(Pageable)이 사용됩니다.이로 인해 두 가지 문제가 발생합니다.
문제점
1. 계약 위반
OrderRepository인터페이스는 반환 타입을Slice<Order>로 명시하고 있으나, 실제로는Page<Order>를 반환합니다.Page는Slice의 하위 타입이므로 컴파일 오류는 발생하지 않지만, 인터페이스 계약을 위반합니다.2. 성능 문제
Page는 전체 레코드 수를 구하기 위해 추가적인 COUNT 쿼리를 실행합니다. 반면Slice는 COUNT 쿼리를 실행하지 않아 더 효율적입니다.관련 정보
대상 파일
src/main/java/com/fhsh/daitda/order/infrastructure/infrastructure/repository/OrderJpaRepository.javasrc/main/java/com/fhsh/daitda/order/infrastructure/infrastructure/OrderRepositoryImpl.java