Shop 서비스
Spring Boot · Spring Data JPA · QueryDSL
문제정의
예: 카테고리/가격/키워드로 동적 검색을 지원하면서도 N+1 없이 빠르게 조회.
접근
- 조회 전용 DTO로 투명한 스키마
- QueryDSL로 조건 조립
- 페이징 + 정렬 최적화
아키텍처
Controller → Service → Repository(QueryDSL)
↳ ReadModel(DTO)
핵심 코드
// 예시: where 조건 동적 조립 (Kotlin/Java 아무거나 가능)
// BooleanBuilder 로 필터 조합, 페이징 적용
성능/함정
- fetch join은 다대다에서 주의
- 컬렉션 페치 페이징 금지 → batch_size로 대체
회고
무엇을 배웠고 다음엔 무엇을 바꿀지.