웹 프로그래밍/JPA
즉시로딩과 지연로딩
YoshiaLee
2023. 3. 4. 15:18
멤버 조회할때 팀까지 조회해야하나?
-지연 로딩 LAZY를 사용해서 팀 객체를 프록시로 가져옴
-@ManyToOne(fetch = FetchType.LAZY)
-실제로 팀 객체의 메서드를 사용하는 시점 DB에 쿼리가 따로 나감(초기화)
멤버와 팀을 자주 함께 사용한다면?
즉시로딩 EAGER를 사용해서 같이 가져옴
@ManyToOne(fetch = FetchType.EAGER)
주의사항
-실무에선 무조건 지연 로딩만 사용
-즉시 로딩을 적용하면 예상하지 못한 SQL이 발생(JPQL에서 N+1 문제를 일으킴)
-@ManyToOne, @OneToOne은 기본이 즉시 로딩 -> LAZY로 설정 바꾸는거 필수
-@OneToMany, @ManyToMany는 기본이 지연 로딩