728x90

JPA 패치 전략 (Fetch Strategy)이란?

JPA에서 패치 전략이란 연관된 엔티티를 조회할 때, 즉시 로딩(EAGER)과 지연 로딩(LAZY) 방식을 지정하는 것을 의미합니다.

  • EAGER (즉시 로딩)

즉시 로딩은 연관된 엔티티가 항상 같이 로딩되어 가져옵니다. 예를 들어, Member 엔티티와 Team 엔티티가 일대다 관계일 때, Member 엔티티를 조회할 때 연관된 Team 엔티티도 함께 조회합니다.

@Entity
public class Member {
    @Id
    @GeneratedValue
    private Long id;
    
    private String name;
    
    @ManyToOne(fetch = FetchType.EAGER)
    private Team team;
    
    // Getter, Setter
}

@Entity
public class Team {
    @Id
    @GeneratedValue
    private Long id;
    
    private String name;
    
    // Getter, Setter
}
  • LAZY (지연 로딩)

지연 로딩은 연관된 엔티티가 실제 사용될 때 로딩됩니다. 예를 들어, Member 엔티티와 Order 엔티티가 일대다 관계일 때, Member 엔티티를 조회할 때 연관된 Order 엔티티는 필요할 때 로딩됩니다.

@Entity
public class Member {
    @Id
    @GeneratedValue
    private Long id;
    
    private String name;
    
    @OneToMany(mappedBy = "member", fetch = FetchType.LAZY)
    private List<Order> orders = new ArrayList<>();
    
    // Getter, Setter
}

@Entity
public class Order {
    @Id
    @GeneratedValue
    private Long id;
    
    private String name;
    
    @ManyToOne
    private Member member;
    
    // Getter, Setter
}

내저장소 바로가기 luxury515

+ Recent posts