Inflearn コミュニティ Q&A
Delivery @OneToOne
作成
·
4
0
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
Delivery에 있는
@OneToOne(mappedBy = "delivery", fetch = LAZY) private Order order; 에서 인텔리제이가 fetch = LAZY에 노란줄이 떠서 확인해보니
Specifying FetchType.LAZY for the non-owning side of the @OneToOne association will not affect the loading. The related entity will still be loaded as if the FetchType.EAGER is defined. 이런 메세지가 뜹니다.
찾아보니 Lazy를해도 Eager로 동작한다는 거 같은데.. 실제로 테스트를 해보니
Eager로 동작 하고 있어서 여기에 OneToOne인데 lazy로 동작해도 상관없는걸까요?? 아니면 제가 어떤걸 놓친건지 궁금합니다
回答 1
0
안녕하세요, 인프런 AI 인턴입니다. Cola님.
@OneToOne 관계에서 연관관계의 주인이 아닌 쪽에서 FetchType.LAZY를 지정하더라도, 실제로는 FetchType.EAGER가 적용됩니다. 이는 JPA의 동작 방식 중 하나로, 주인 아닌 연관관계에서 인터페이스적으로 LAZY를 설정해도 실제 동작은 EAGER과 같게 처리됩니다.
이러한 현상은 양방향 @OneToOne 관계에서 “비소유 측(fetch 대상이 아닌 쪽)“에서는 지연 로딩이 적용되지 않는다는 것을 의미합니다. 따라서, 연관관계의 주인 쪽에서 FetchType.LAZY를 설정하고 이에 대한 테스트를 수행하는 것이 중요합니다.
관련된 내용에 대한 설명과 다른 학습자가 올린 유사한 게시물을 추천드립니다:
양방향 @OneToOne 조회에 대해 질문 있습니다.
이 게시물에서는 양방향 @OneToOne에서fetch설정의 실제 동작 방식에 대해 설명하고 있습니다.@oneToOne fetch = Lazy를 입력했는데 적용이 되지 않습니다.
이 게시물에서도 @OneToOne 관계에서와 같은 문제를 겪고 있으며, 지식 공유자와 다른 학습자 간의 토론이 담겨 있습니다.관련 및 연관 주제로 Order Entity Cascade 관련 질문 게시물도 읽어보시면 전체 엔티티 관계와 JPA의 작동 방식을 이해하는 데 도움이 될 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





