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

Ch04. API 개발 고급(컬렉션 조회 최적화) - 주문 조회 V2(Entity -> DTO로 변환)

webmaster 2021. 12. 21. 10:18
728x90

앤티티를 외부로 노출하면 안 된다는 것은 DTO내부에 존재하는 모든 것들이 다 앤티티와 의존성을 끊어야 된다는 뜻이다.

내부의 엔티티 또한 DTO로 변경해서 출력한다.
DTO로 변경
내부 앤티티도 DTO로 변경해서 출력하고 싶은것만 출력

 

  • 내부에 만약 앤티티가 있다면 후에 앤티티가 변경되면 API스펙이 변경되므로 앤티티의 의존성을 다 제거해야
  • 쿼리가 너무 많이 발생된다.
  • SQL 실행 수 (최악의 경우)
    • order 1번
    • member , address N번(order 조회 수 만큼)
    • orderItem N번(order 조회 수 만큼)
    • item N번(orderItem 조회 수 만큼

참고 : 지연 로딩은 영속성 컨텍스트에 있으면 영속성 컨텍스트에 있는 엔티티를 사용하고 없으면 SQL을 실행한다. 따라서 같은 영속성 컨텍스트에서 이미 로딩한 회원 엔티티를 추가로 조회하면 SQL을 실행하지 않는다.

728x90