양방향 @OneToOne일 때 연관관계의 주인이 아닌 엔티티를 조회할 경우, Lazy Loading이 동작하지 않는다.
JPA는 연관된 엔티티가 없으면 null로 초기화하고, 있으면 Lazy Loading이 설정되어 있을 경우 프록시 객체로 초기화한다.
하지만 데이터베이스의 테이블 관점에서 보면, 연관관계의 주인이 아닌 엔티티는 연관관계를 참조할 FK가 없기 때문에 연관관계의 존재 여부를 알지 못한다.
그래서 JPA는 null 혹은 프록시 객체 중 무엇으로 초기화할지 결정할 수 없게 되고,
결과적으로 연관된 엔티티의 존재 여부를 확인하는 추가 쿼리를 실행하기 때문에 Lazy Loading이 동작하지 않는다.
✨ Lazy Loading (지연 로딩)
- 연관된 데이터를 나중에 필요할 때 가져오는 방식
- 처음엔 프록시(가짜) 객체를 줌
- 실제로 사용할 때 진짜 데이터를 DB에서 조회
- 성능 최적화에 좋음
'cs(with 매일메일)' 카테고리의 다른 글
| [260127화] 자료구조 트라이에 대해서 설명해주세요. (0) | 2026.01.28 |
|---|---|
| [260126월] 자바에서 Object타입인 value를 String으로 타입 캐스팅하는 것과 String.valueOf()를 사용하는 것의 차이점은 무엇인가요? (0) | 2026.01.28 |
| [260122목] Infrastructure as Code(IaC)에 대해 설명해주세요. (1) | 2026.01.26 |
| [260121수] String객체는 가변일까요, 불변일까요? 그렇게 생각하신 이유도 함께 설명해주세요. (0) | 2026.01.26 |
| [260120화] 네트워크에서 회선 교환 방식과 패킷 교환 방식은 어떤 차이점 있나요? (0) | 2026.01.26 |