FetchType LAZY와 EAGER

마라탕천재 ㅣ 2024. 9. 30. 11:27

FetchType LAZY (게으른 로딩)

LAZY 전략은 말 그대로 '게으른' 방식으로 데이터를 로딩한다.

  • 특징: 필요한 시점에 데이터를 가져온다.
  • 작동 방식: 주 데이터만 먼저 로딩하고, 연관 데이터는 실제로 요청할 때 로딩한다.
  • 예시: 책과 리뷰 관계에서 책 정보만 먼저 가져오고, 리뷰는 실제로 조회할 때 가져온다.

장점:

  • 초기 로딩 속도가 빠르다.
  • 불필요한 데이터 로딩을 줄여 리소스를 절약할 수 있다.

단점:

  • 연관 데이터에 접근할 때마다 추가 쿼리가 발생할 수 있다.
  • 잘못 사용하면 N+1 문제를 야기할 수 있다.

 

 

FetchType EAGER (즉시 로딩)

EAGER 전략은 LAZY와 반대로 '즉시' 모든 데이터를 로딩한다.

  • 특징: 관련된 모든 데이터를 한 번에 가져온다.
  • 작동 방식: 주 데이터와 연관 데이터를 동시에 로딩한다.
  • 예시: 책 정보를 조회할 때 모든 리뷰 데이터도 함께 가져온다.

장점:

  • 연관 데이터에 접근할 때 추가 쿼리가 필요 없어 후속 처리가 빠르다.
  • 데이터 일관성을 유지하기 쉽다.

단점:

  • 초기 로딩 시 더 많은 시간과 리소스가 필요하다.
  • 사용하지 않을 수도 있는 데이터까지 모두 로딩하므로 비효율적일 수 있다.

 

 

결론

LAZY와 EAGER 중 어떤 전략을 선택할지는 상황에 따라 다르다. 자주 사용되는 연관 데이터라면 EAGER가 유리할 수 있고, 가끔 사용되거나 조건에 따라 필요한 데이터라면 LAZY가 더 효율적일 수 있다.