배경

문제

  1. @OneToMany 로 매핑된 테이블에 대해 N+1 쿼리 발생
  2. @OneToOne 으로 User와 매핑된 PiBasic 에서 N+1 쿼리 발생
    1. 연관관계 주인이 아닌 (FK가 없는) 엔티티에서 OneToOne 관계의 엔티티 조회시, N+1 쿼리 발생 User → PiBasic 당연히 User는 PiBasic의 PK를 모르기때문에 한 번에 조회 불가 → N+1 쿼리 발생
  3. @ManyToOne 으로 매핑된 연관 엔티티의 fetch 타입이 EAGER라 해당 엔티티 데이터가 필요없음에도 불구하고 매번 조회함
  4. Goal 에서 GoalDto로 변환하는 과정에서 Goal에 있는 모든 연관관계를 조회하여 GoalDto에 매핑해야되기때문에 GoalDto로 변환하는 [Goal의 개수 * 연관관계 개수] 만큼 N+1 쿼리 발생

해결방법

24/06/28 update