인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

Joshua Kim님의 프로필 이미지
Joshua Kim

작성한 질문수

Spring Boot를 활용하여 채팅 플랫폼 만들어보기

Entity와 Lazy Fetch에 관하여

안녕하세요 연관관계에 대해 질문이 있습니다.

해결된 질문

작성

·

55

0

안녕하세요 지식공유자님.

User 클래스의 credentials 필드에 lazy loading 관련하여 설명을 해주셨는데요, 제가 알기로는 mappedBy 가 있는 쪽에서는 LAZY 로딩이 동작하지 않는 것으로 알고 있습니다. 즉, 연관관계의 주인인 UserCredentails 쪽에만 적용하는 것이 맞다고 생각이 드는데 제 생각이 맞을까요?

 

답변 2

0

Hong님의 프로필 이미지
Hong
지식공유자

앗 그렇게 크리티컬하게 발생 가능한 형태의 데이터가 아니라서 그냥 간단하게 설명드리고 넘어갔었습니다.
상황에 따라서 Hibernate에서 Lazy Loading을 마음대로 지원하지 않는것은 꽤나 복잡한 문제입니다. ㅠㅠ 질문자님께서 생각하시는 부분이 맞으실 겁니다.

아무래도 현재는 제가 Spring을 주 언어로 사용하는 환경이 아니다 보니 기억이 나지 않고 긴가민가 해서 좀 더 실제 테스트 케이스와 예시가 있는 링크를 찾아왔습니다. 해당 부분을 참고하시면 더 좋은 정보를 얻어 가실 수 있을 겁니다.

 

강의를 듣느데에 있어서 불편함을 드린거 같아서 죄송합니다. 질문 주셔서 감사합니다 :)

0

안녕하세요, 인프런 AI 인턴입니다. Joshua Kim님.

연관관계의 주인과 mappedBy 속성에 대해 질문을 주셨군요. mappedBy는 양방향 관계에서 관계의 주인을 지정해 주는 속성으로, LAZY 로딩 설정과 관련된 몇 가지 기술적인 오해가 있을 수 있습니다. 이를 정리해 드리겠습니다.

LAZY 로딩과 mappedBy 속성

  • 연관관계의 주인과 상대편: 연관관계에서 주인은 외래 키를 가지는 쪽이며, 이쪽이 데이터베이스의 변경을 관리합니다. mappedBy 속성을 가지는 쪽은 주인이 아니고, 따라서 이쪽에서 어떠한 변경도 관리하지 않습니다.

  • LAZY 로딩: 양방향 연관관계에서 JPA는 기본적으로 LAZY 로딩을 지원하나, 실제로는 프록시를 사용하여 지연로딩을 처리합니다. LAZY 로딩은 일반적으로 @OneToMany, @ManyToOne 과 같은 관계에 적용될 수 있으며, mappedBy가 지정된 엔티티에서도 적절하게 동작합니다.

다음은 관련된 설명이 포함된 기존 답변 링크입니다. 이는 연관관계의 설정 방식과 LAZY 로딩에 대한 실질적인 이해를 돕습니다:
1. JPA 연관관계에서 LAZY 로딩의 올바른 이해
2. mappedBy와 연관관계의 주인 이해하기

핵심 포인트 요약:

  • mappedBy가 있는 쪽에서도 LAZY 로딩은 설정 가능하며, 주로 컬렉션 형태의 연관관계에서 잘 활용됩니다.
  • User 클래스와 UserCredentials 간의 관계에서도 UserCredentials가 연관관계의 주인이라면 여기서 진짜 DB 변경이 관리되며, User에서는 관련 컬렉션이나 객체가 사용할 때까지 실제로 로딩되지 않습니다.

이해를 돕기 위해 더 많은 정보가 필요하다면 추가적으로 질문해 주세요. 유사한 질문 링크를 통해 더 깊은 이해가 가능하실 겁니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Joshua Kim님의 프로필 이미지
Joshua Kim

작성한 질문수

질문하기