어떤 api를 통해서 user를 조회하던지 간에 항상
NotiTimeQ와 SuspendedUser엔티티를 조회하는 쿼리가 계속 같이 나가는 문제가 있었다.
그럼 한 명의 유저를 조회할 때마다 2개씩 추가로 조회되는 문제가 있었다.
그래서 이 문제를 해결하기 위해서 우선 유저와 저 두 엔티티 간의 관계를 확인했다.
문제가 없는 다른 엔티티들과 달리, NotiTimeQ와 SuspendedUser는 OneToOne 관계인 것을 발견했다.
그리고 연관관계의 주인이 User가 아니라 저 엔티티이다.
Fetch 전략을 Lazy로 설정하고 조회했음에도 왜 User 엔티티를 조회할 때마다 두 엔티티도 같이 조회를 하는 것일까?
우선 이는 Fetch가 아니라 Lazy Loading으로 동작했다고 원인을 생각했다.
그리고 그 이유를 열심히 구글링 & 김영한 님의 강의를 본 기억을 더듬어 찾아본 결과,
OneToOne 관계에서 연관관계의 주인이 아닌 곳에서 호출하는 경우 지연 로딩이 아닌 즉시 로딩으로 동작한다는 것을 알았다.
왜냐하면 지연 로딩은