본문 바로가기

CS 잡지식

API 개발 시, [JPQL의 작성 방식]의 선택 기준(Feat.Fetch Join,new 연산자를 이용한 DTO 직접 변환)

쿼리 방식 선택 권장 순서

1. 우선 엔티티를 DTO로 변환하는 방법을 선택한다 : 절대적 지침

2. 필요하면 페치 조인으로 성능을 최적화 한다. [대부분의] 성능 이슈가 해결된다.

3. 그래도 안되면 DTO로 [직접] 조회하는 방법을 사용한다 : Repository 계층에서 new 연산자로 JPQL 작성.

(3에는 단점이 있고, 그에 따른 해결 방법도 있다. 아래 사이트를 참조)

https://jbluke.tistory.com/421

 

https://jbluke.tistory.com/manage/newpost/421

 

jbluke.tistory.com

(https://jbluke.tistory.com/419의 V4 메서드 참조)

 

DB 최적화 기법 - Projection 대상을 필요한 것만으로 한정(Feat.DTO)

@GetMapping("/api/v3/simple-orders") public List orderV3() { //fetch join을 사용하여 Order 조회! List findOrders = orderRepository.findAllWithMemberDelivery(); // 미리 정해진 API 결과 스펙을 반환하기 위하여, DTO에 정해진 스펙

jbluke.tistory.com

4. 최후의 방법은 JPA가 제공하는 네이티브 SQL이나 스프링 JDBC Template을 사용해서 [SQL을 직접 사용]한다