반응형 n+12 [JPA] 즉시로딩과 N+1 문제 즉시로딩(FetchType.EAGER) 연관관계 맺을 때 즉시로딩 설정 시 연관 엔티티 즉시 조회 N+1 문제 주로 즉시로딩(FetchType.EAGER)으로 설정해두고, JPQL을 사용할 때 발생 JPQL의 경우 바로 SQL로 변환됨 예) Order entity에서 Member entity를 즉시로딩으로 설정했을 때 JPQL: select o From order o; → SQL: select * from order; EAGER 설정이 되어있어도 조인해서 읽어오지 않고, 단건 조회를 수행하게 됨 → 단건 조회한 후, 조회한 수 만큼 연관 테이블을 가져오는 쿼리를 N개 던지게 되서 성능이슈 발생 해결 fetch 조인 또는 엔티티 그래프를 이용해서 조회 주의 기본 fetch 전략 @xToOne(@ManyTo.. 2022. 10. 24. [JPA] 지연 로딩 LAZY , 즉시 로딩 EAGER # 지연 로딩 가급적 지연 로딩 사용! 연관된 엔티티를 프록시 객체로 가져옴 실제 사용할 때 프록시 초기화(디비에서 조회해서 가져옴) @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "TEAM_ID") private Team team; # 즉시 로딩 주로 연관된 엔티티를 함께 조회해서 사용할 때 사용 조인 쿼리로 조회 ★@ManyToOne, @OneToOne => 기본이 즉시로딩이므로 Lazy로 설정해줘야함★ @ManyToOne(fetch = FetchType.EAGER) @JoinColumn(name = "TEAM_ID") private Team team; ★즉시 로딩은 JPQL에서 N+1 문제 일으킴★ JPQL은 SQL로 번역해서 실행함 (최적화X) -.. 2022. 4. 6. 이전 1 다음