지연로딩 vs 즉시로딩

sseongeun·2024년 4월 9일

스프링

목록 보기
1/13

즉시로딩과 지연로딩은 JPA를 사용핼때 데이터를 언제&어떻게 불러올지 결정하는 두 전략이다!

📌즉시로딩이란? (EAGER)

데이터를 조회할때 연관된 모든 객체의 데이터를 "한번에" 불러오는 방법
ex) 게시글을 불러올때 해당 게시글과 연관된 댓글도 모두 가져온다

✚ 장점) 한번의 쿼리로 모든 데이터를 가져올 수 있다

✚ 단점) 필요하지 않는 데이터까지 가져와진다
예측이 어렵고, 어떤 SQL이 실행될지 추적하기 어렵다
JPQL실행시 N+1의 문제 자주 발생

📣 @XToOne 관계는 기본값이 즉시 로딩임!

-> 따라서 직접 지연로딩으로 설정해야한다.

@OneToMany(fetch=FetchType.LAZY)
private Order order;

📌지연로딩이란? (LAZY)

데이터를 실제로 사용할 때까지 불러오지 않는 방법
ex) 게시글을 불러올때 게시글만 먼저 로드하고 댓글은 필요로할때만 가져옴

✚ 장점) 시스템 리소스 절약
✚ 단점) 데이터에 접근할 떄마다 추가적인 쿼리가 필요함 -> 성능 저하 발생가능

✅ 실무에서는 모든 연관관계는 지연로딩(LAZY)으로 설정해야한다!!!!

profile
공부 기록...

0개의 댓글