지연 로딩
지연 로딩 (Lazy Loading)
연관된 데이터를 실제로 사용할 때 조회하는 방식입니다.
반대 개념: 즉시 로딩 (Eager Loading)
연관된 데이터를 처음부터 함께 조회하는 방식입니다.
JPA 예시
@Entity
public class Team {
@OneToMany(mappedBy = "team", fetch = FetchType.LAZY) // 지연 로딩
private List<Member> members;
}
Team team = teamRepository.findById(1L); // 이 시점엔 members 조회 안 함
team.getMembers().size(); // 이 시점에 members 조회 쿼리 발생
왜 쓰는가
불필요한 데이터를 미리 로딩하지 않아서 성능이 좋아집니다. 팀 정보만 필요한데 멤버까지 항상 조회하면 낭비니까요.
JPA에서 자주 쓰이지만
지연 로딩은 JPA만의 개념이 아닙니다.
| 분야 | 예시 |
|---|---|
| 프론트엔드 | 이미지 lazy loading, 코드 스플리팅 |
| OS | 동적 라이브러리 로딩 |
| 가상화 | Copy-on-write |
필요한 시점까지 로딩을 미룬다는 일반적인 최적화 전략입니다.