본문 바로가기

웹 프로그래밍/JPA

즉시로딩과 지연로딩

멤버 조회할때 팀까지 조회해야하나?

-지연 로딩 LAZY를 사용해서 팀 객체를 프록시로 가져옴

-@ManyToOne(fetch = FetchType.LAZY)

-실제로 팀 객체의 메서드를 사용하는 시점 DB에 쿼리가 따로 나감(초기화)

 

멤버와 팀을 자주 함께 사용한다면?

즉시로딩 EAGER를 사용해서 같이 가져옴

@ManyToOne(fetch = FetchType.EAGER)

 

주의사항

-실무에선 무조건 지연 로딩만 사용

-즉시 로딩을 적용하면 예상하지 못한 SQL이 발생(JPQL에서 N+1 문제를 일으킴)

-@ManyToOne, @OneToOne은 기본이 즉시 로딩 -> LAZY로 설정 바꾸는거 필수

-@OneToMany, @ManyToMany는 기본이 지연 로딩

 

 

 

 

'웹 프로그래밍 > JPA' 카테고리의 다른 글

기본값 타입, 임베디드 타입  (0) 2023.03.06
영속성 전이(CASCADE)와 고아 객체  (0) 2023.03.04
프록시  (1) 2023.03.04
고급 매핑  (0) 2023.03.04
연관관계 매핑 기초  (0) 2023.03.03