즉시 로딩과 지연 로딩
즉시 로딩과 지연 로딩
단순히 member 정보만 사용하는 비즈니스 로직
println(member.getName());
지연 로딩 LAZY을 사용해서 프록시로 조회
지연 로딩
Member member = em.find(Member.class, 1L);
Team team = member.getTeam();
team.getName(); // 실제 team을 사용하는 시점에 초기화(DB 조회)
즉시 로딩 EAGER를 사용해서 함께 조회
즉시 로딩
즉시 로딩(EAGER), Member조회시 항상 Team도 조회
JPA 구현체는 가능하면 조인을 사용해서 SQL 한번에 함께 조회
프록시와 즉시로딩 주의
가급적 지연 로딩만 사용(특히 실무에서)
즉시 로딩을 적용하면 예상하지 못한 SQL이 발생
즉시 로딩은 JPQL에서 N+1 문제를 일으킨다.
@ManyToOne, @OneToOne은 기본이 즉시 로딩 -> LAZY로 설정
@OneToMany, @ManyToMany는 기본이 지연 로딩
Last updated