개발/Spring

[Hibernate] Lazy모드 신기한점

지산동고라니 2021. 11. 9. 23:37

Hibernate 모드에서 Lazy모드를 공부하던 중 신기한 것을 발견했다. 아래 콘솔창을 보면 분명 Hibernate가 SQL문을 한번만 실행한 것을 알 수 있다. 이는 Lazy모드이기에 필요없는 부분은 SQL을 실행하지 않기 때문이다. 여기까지는 Lazy모드가 잘 작동된다고 생각했다.

 

그리고 또 다른 사진이다

분명 코드상의 다른점은 없다. 하지만 콘솔에의 경우 보이는 바와 같이 종속된 클래스까지 불러오는 것을 볼 수 있다. 이부분에 대해서 궁금해서 찾아보니 HIbernate가 저 디버거 varaibles탭에 있는 instructor을 클릭하는 순간 필요한에 대한 SQL을 실행한다고 한다.

 

도대체 이건 어떻게 작동하는지 도통 알수가 없다... 

 

추가 찾아보니 Dynamic Proxy Classes라고 런타임 중간에 필요할때 실행해준다고 하는데 이걸 이용해서 작동하는 듯하다 정말 파도파도 쏟아지는 개념들... ㅂㄷㅂㄷ Dynamic Proxy Classes (oracle.com)