정리

권장 순서

  1. 엔티티 조회 방식으로 우선 접근
    1. 페치 조인으로 쿼리 수 최적화
    2. 컬렉션 최적화
      1. 페이징 필요, batch_fetch_size로 최적화
      2. 페이징 필요 X → 페치 조인 사용
  2. 엔티티 조회 방식으로 해결이 안되면 DTO 조회 방식 사용
  3. DTO 조회 방식으로 해결이 안되면 NativeSQL or 스프링 JdbcTemplate

<aside> 💡 엔티티 조회 방식은 페치 조인이나, batch_fetch_size를 사용해서 코드를 거의 수정하지 않고 옵션만 변경해서 다양한 성능 최적화를 시도할 수 있다. 반면에 DTO는 성능 최적화 방식을 변경할 때 많은 코드를 변경해야 한다.

</aside>

<aside> 💡 개발자는 성능 최적화와 코드 복잡도 사이에서 줄타기를 해야 한다. 보통 성능 최적화를 하게 되면 코드가 복잡해 진다. 엔티티 조회 방식은 JPA가 많은 부분을 최적화 해주기 때문에 단순한 코드를 유지하면서, 성능을 최적화 할 수 있다. 반면에 DTO 조회 방식은 SQL을 직접 다루는 것과 유사하기 때문에, 둘 사이에서 줄타기를 해야 한다.

</aside>

DTO 조회 방식의 선택지