상황 : 연관 관계에 의해 조회할 필요없는 데이터 조회

 

해결 : findById 대신 getReferenceById를 통해 데이터 조회

 

이유 

  • findById를 사용하면 이 함수가 쓰인 즉시 쿼리를 발생시켜 db에서 데이터를 조회하지만 getReferenceById는 entity를 실제로 사용할 때까지 데이터 조회를 지연한다.
  • 즉, entity가 필요한 시점에 쿼리를 발생시킨다.
  • 지연 로딩을 사용한 것이므로 실제 사용 전까지는 proxy 형태로 객체를 가리키고 있다.
  • id값을 가지고 올 때까지는 지연 로딩이고, 그 외에 데이터를 가져올 때는 쿼리를 발생시킨다.
  • 연관 관계 매핑할 때도 getReferenceById를 통해 가져온 proxy 객체를 넣어줘도 문제 없다. 대신 save할 때 만약 없는 데이터면 에러가 발생한다.

+ Recent posts