지연 로딩

지연 로딩 (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

필요한 시점까지 로딩을 미룬다는 일반적인 최적화 전략입니다.

CSLOG에서 보기