1. FetchType.EAGER (즉시 로딩)

  • 장점:
    • 연관된 엔터티가 항상 함께 로딩되므로, 엔터티 사용 시 추가적인 쿼리 없이 바로 사용 가능.
  • 단점:
    • 항상 연관된 엔터티를 함께 불러오므로, 필요하지 않은 데이터까지 로드될 수 있다.
    • 결과적으로 성능 문제가 발생할 수 있으며, 불필요한 네트워크 및 메모리 리소스가 사용될 수 있다.

2. FetchType.LAZY (지연 로딩)

  • 장점:
    • 실제로 연관된 엔터티에 접근할 때만 데이터베이스로부터 로딩한다. 따라서 필요한 경우에만 쿼리가 발생.
    • 성능 최적화에 도움을 줄 수 있다. 불필요한 데이터를 로딩하지 않으므로 자원을 효율적으로 사용할 수 있다.
  • 단점:
    • 첫 접근 시 추가적인 쿼리가 실행됨. 즉, 처음 연관된 엔터티에 접근할 때마다 쿼리가 실행될 수 있다.
    • 트랜잭션 밖에서 지연 로딩을 시도하면 LazyInitializationException이 발생한다.

대부분의 상황에서 모든 연관된 엔터티를 즉시 로딩하는 것은 비효율적입니다. 특히, 관계가 복잡한 큰 애플리케이션에서는 많은 데이터가 불필요하게 로딩될 수 있습니다. 그러나 상황에 따라 연관된 엔터티를 항상 함께 로드해야 하는 경우도 있습니다. 이런 경우에는 EAGER 전략을 사용하여 즉시 로딩을 할 수 있습니다.

' > Spring' 카테고리의 다른 글

Post Fix 메일 (smtp 서버)/ spring 메일 전송  (1) 2023.10.31
AOP에 대하여  (0) 2023.10.21
Lazy Loading이란?  (0) 2023.10.09
간단한 테스트 코드 함수 정리  (0) 2023.10.02
JpaReporitory vs EntityManager  (0) 2023.09.24

+ Recent posts