반응형

FetchType 2

[Spring JPA 공식 문서 기반] 14. Lazy Loading은 왜 항상 터질까

13편에서는 즉시 로딩(EAGER)이“항상 함께 로딩한다”는 전제 때문에 실무에서 구조적인 문제를 만들 수밖에 없다는 점을 살펴봤습니다.그 다음으로 자연스럽게 나오는 말이 있습니다.“그럼 Lazy는 안전한가요?”하지만 실무에서는 오히려“Lazy는 항상 터진다”는 인식이 더 강합니다.이번 글에서는 이 인식이 왜 생겼는지, 그리고 그 오해의 정체가 무엇인지 공식 문서 관점에서 정리해보겠습니다.1. Lazy Loading은 원래 문제가 아니다먼저 분명히 해야 할 사실이 있습니다.Lazy Loading 자체는 문제 있는 기능이 아니다오히려 JPA 공식 문서 기준으로 보면, Lazy Loading은연관관계를 필요할 때만 로딩하고불필요한 JOIN을 피하며조회 성능을 제어하기 위한 기본 전략입니다.즉,Lazy는 “위..

[Spring JPA 공식 문서 기반] 13. 즉시 로딩(EAGER)은 왜 항상 문제를 만들까

12편에서는 연관관계의 주인이 왜 중요한지, 그리고 그 선택이UPDATE SQL 증가와 성능 문제로 어떻게 이어지는지를 살펴봤습니다.이번 글에서는 그 연관관계 설계에서가장 위험한 선택으로 꼽히는즉시 로딩(EAGER)이 왜 실무에서 거의 항상 문제를 만드는지를 공식 문서 기준으로 정리해보겠습니다.1. EAGER는 왜 존재할까먼저 오해부터 정리해야 합니다.EAGER는잘못된 옵션 ❌비권장 기능 ❌이 아닙니다.JPA 공식 문서 기준으로, EAGER는“해당 연관 엔티티가 항상 함께 필요하다는 강한 가정”을 표현하기 위해 존재합니다.즉,“이 연관관계는 분리해서 쓰일 일이 없다”라는 설계 의도를 코드로 드러내는 옵션입니다.2. 문제는 ‘항상’이라는 전제다EAGER의 가장 큰 문제는 옵션 자체가 아니라,“항상 함께 필..

반응형