상황 : 연관 관계에 의해 조회할 필요없는 데이터 조회
해결 : findById 대신 getReferenceById를 통해 데이터 조회
이유
- findById를 사용하면 이 함수가 쓰인 즉시 쿼리를 발생시켜 db에서 데이터를 조회하지만 getReferenceById는 entity를 실제로 사용할 때까지 데이터 조회를 지연한다.
- 즉, entity가 필요한 시점에 쿼리를 발생시킨다.
- 지연 로딩을 사용한 것이므로 실제 사용 전까지는 proxy 형태로 객체를 가리키고 있다.
- id값을 가지고 올 때까지는 지연 로딩이고, 그 외에 데이터를 가져올 때는 쿼리를 발생시킨다.
- 연관 관계 매핑할 때도 getReferenceById를 통해 가져온 proxy 객체를 넣어줘도 문제 없다. 대신 save할 때 만약 없는 데이터면 에러가 발생한다.
'Spring Boot' 카테고리의 다른 글
Container & BeanFactory & ApplicationContext (0) | 2025.02.01 |
---|---|
커서 기반 페이지네이션 추가 정보 (0) | 2025.01.31 |
QueryParameter Dto로 받기 (0) | 2024.12.10 |
Presigned Url을 통한 파일 업로드 최적화 (0) | 2024.11.08 |
Validation 예외 처리 (0) | 2024.10.30 |