스택큐힙리스트

Java Persistence API에서 FetchType LAZY와 EAGER의 차이점은 무엇인가요? 본문

카테고리 없음

Java Persistence API에서 FetchType LAZY와 EAGER의 차이점은 무엇인가요?

스택큐힙리스트 2023. 10. 26. 12:26
반응형

Java Persistence API에서 FetchType.LAZYFetchType.EAGER의 차이점은 무엇인가요?

답변 1


  1. 다른 필드와 함께 로드하려면 (즉, eager하게) 로드하거나

  2. 대학의 getStudents() 메소드를 호출할 때 로드하려면 (즉, lazy하게) 로드합니다.


대학이 많은 학생을 가지고 있을 때, 모든 학생을 함께 로드하는 것은 효율적이지 않으며, 특히 필요하지 않을 때에는 학생들이 실제로 필요할 때 로드되도록 선언할 수 있습니다. 이를 lazy loading이라고 합니다.


다음은 students가 명시적으로 eager하게 로드되도록 표시된 예시입니다:


@Entity
public class University {
@Id
private String id;
private String name;
private String address;
@OneToMany(fetch = FetchType.EAGER)
private List<Student> students;
// etc.
}

다음은 students가 명시적으로 lazy하게 로드되도록 표시된 예시입니다:

@Entity
public class University {
@Id
private String id;
private String name;
private String address;
@OneToMany(fetch = FetchType.LAZY)
private List<Student> students;
// 기타.
}

답변 2

FetchType.Lazy와 FetchType.Eager는 Java Persistence API (JPA)에서 사용되는 양식입니다. 이 양식들은 엔터티 클래스와 관련된 데이터의 로딩 방식을 지정하는 데 사용됩니다. FetchType.Lazy는 필요할 때에만 연관된 데이터를 로딩하는 반면, FetchType.Eager는 엔터티 클래스가 로딩될 때 즉시 연관된 데이터를 로딩합니다. 이 기사에서는 FetchType.Lazy와 FetchType.Eager의 차이점에 대해 자세히 알아보겠습니다.
FetchType.Lazy는 기본적으로 지연로딩을 의미합니다. 이는 연관된 데이터가 직접적으로 필요하지 않은 한 로딩되지 않고 엔터티만 로딩됩니다. Lazy 로딩은 연관된 데이터에 대한 액세스가 있을 때까지 데이터베이스 쿼리를 지연시킴으로써 성능을 향상시킬 수 있습니다. 연관된 데이터에 대한 접근이 필요한 경우에만 데이터베이스에서 해당 데이터를 로드하여 응답 시간을 최적화합니다. 이는 애플리케이션의 전체 성능에 긍정적인 영향을 미칩니다.
반면에 FetchType.Eager는 즉시로딩을 의미합니다. 이는 엔터티 클래스와 연관된 모든 데이터가 즉시 로딩되는 것을 의미합니다. FetchType.Eager는 연관된 데이터에 대한 쿼리가 곧바로 실행되기 때문에 초기 응답 시간에 영향을 줄 수 있습니다. 그러나 데이터 증가에 따라 가능한 경우 모든 필드가 로드되므로 부하가 증가할 수 있습니다.
두 방식 중 어떤 것을 사용할지는 개발자의 목적에 따라 다를 수 있습니다. FetchType.Lazy는 애플리케이션의 성능을 향상시킬 수 있으므로 주로 대량의 데이터나 규모가 큰 애플리케이션에 사용됩니다. 반면에 FetchType.Eager는 작은 규모의 애플리케이션이나 많은 필드가 동시에 필요한 경우에 적합합니다.
Java Persistence API (JPA)에서 FetchType.Lazy와 FetchType.Eager는 데이터 로딩 방식을 정의하는 데 사용됩니다. FetchType.Lazy는 필요할 때에만 데이터를 로딩하며, FetchType.Eager는 엔터티 클래스가 로딩될 때 즉시 데이터를 로딩합니다. 두 방식 모두 다른 상황에서 유용하며, 개발자는 애플리케이션의 요구사항에 맞게 사용할 수 있어야 합니다.

반응형
Comments