인프런 커뮤니티 질문&답변

weekbelt님의 프로필 이미지
weekbelt

작성한 질문수

실전! 스프링 부트와 JPA 활용2 - API 개발과 성능 최적화

간단한 주문 조회 V3: 엔티티를 DTO로 변환 - 페치 조인 최적화

간단한 주문조회 v3에 관한 질문이있습니다.

작성

·

194

5

쿼리 성능 최적화를 위해서 OrderRepository에 쿼리를 한방에 날리기 위해 fetch join을 사용하는건 이해가 됐습니다.

그렇다면 API스펙이 바뀔때마다 OrderRepository에 새롭게 fetch join을 사용하여 메소드를 생성해야되는 건가요?

답변 1

8

김영한님의 프로필 이미지
김영한
지식공유자

안녕하세요. 김주혁님 좋은 질문입니다^^

API 스펙의 변경 범위에 따라서 리포지토리의 변경 여부가 결정됩니다. 만약 이미 fetch join을 완료한 테이블 안에서 특정 컬럼 몇게만 추가한다면, 리포지토리는 변경없이, 컨트롤러에 DTO 변환 쪽만 변경하면 됩니다.

그런데 만약 API 스펙 변경으로 fetch join 해야하는 테이블 자체가 변경된다면, 리포지토리도 변경해야 합니다.

fetch join 없이 지연로딩으로 풀면 이런 부분들이 좀 더 유연해지지만, 성능이 안나오고, 반대로 fetch join을 사용하면 유연성을 떨어지지만 성능은 잘 나옵니다. 따라서 둘 사이에 트레이드 오프를 두고 고민해야 합니다.

예를 들어서 실무에서 실시간 고객 트래픽을 많이 받는 쪽이면 성능이 중요하므로 fetch join 위주로 가고, 사용자가 적은 내부 어드민이라면 좀더 유연성을 발휘할 수 있습니다.

감사합니다.

weekbelt님의 프로필 이미지
weekbelt

작성한 질문수

질문하기