본문 바로가기

TIL

TIL) Lazy Loading, Eager Loading

1. Lazy Loading(지연 로딩) 이란?

 fetch속성을 이용하여 FetchType.LAZY를 선언하면 지연로딩을 이용할 수 있습니다. 지연로딩은 데이터를 실제로 필요할 때만 불러오는 방식입니다. 예시로 유저의 정보를 가지고있는 스케쥴을 조회할 때, 지연로딩이 아니라면 스케쥴의 정보를 불러올 때, 유저의 정보도 불러오게됩니다. 하지만 지연로딩을 이용한다면 스케쥴을 조회할 때 유저의 정보를 불러오지 않고, 스케쥴을 통해 유저의 정보가 필요하다면 그때, 유저 테이블에서 유저의 정보를 조회합니다. Proxy객체를 조회합니다. 연관된 객체를 함께 조회하는 것이 낭비인 경우에 사용합니다.

 

2. Eager Loading(즉시 로딩) 이란?

 fetch 속성을 이용하여 FetchType.EAGER를 선언하여 즉시 로딩을 이용할 수 있습니다. 지연로딩과 다르게 연관된 데이터를 한번에 불러오는 방식입니다. 즉, 스케쥴을 조회할 때, 유저의 정보도 같이 가지고 오는 것 입니다. Proxy에서 조회하지 않고 한 번에 연관된 객체까지 조회합니다. 연관된 객체를 함께 조회하는 것이 효율적인 경우에 사용합니다.

 

3. Lazy Loading과 Eager Loading의 차이

 Lazy Loading 장점 : 메모리 절약과 성능향상에 유리 / 불필요한 데이터 로드 방지

 Lazy Loading 단점 : 연관된 데이터를 이용할 때 추가적인 쿼리가 발생합니다.


 Eager Loading 장점 : 즉시 관련된 데이터를 이용할 수 있습니다.

 Eager Loading 단점 : 메모리 사용량이 많고, 불필요한 데이터 로드로 인한 성능 저하가 발생할 수 있습니다.

 

4. 선택 방법

  • Lazy Loading : 일반적으로 사용하기 좋다. 연관 데이터가 필요하지 않다면 사용하기 유리하다.
  • Eager Loading : 연관데이터를 즉시 사용하거나, 그 양이 작을 때 사용하기 유리하다.

5. 내일 해야할 것

  • 과제 ERD, api 명세서 작성
  • 환전요청에대한 CRUD 작성