inflearn logo
강의

Course

Instructor

Building a Chat Platform Using Spring Boot

About Entity and Lazy Fetch

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

Resolved

143

Joshua Kim

5 asked

0

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

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

 

mysql spring-boot jpa jwt websocket

Answer 2

0

Hong

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

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

 

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

0

communityai8509

안녕하세요, 인프런 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에서는 관련 컬렉션이나 객체가 사용할 때까지 실제로 로딩되지 않습니다.

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

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

패키지 구분에 대해 궁금한게 있습니다

0

7

1

스프링부트 서버 에러나요

0

17

1

코드를 첨부해야하는 이유가 있나요?

0

20

2

74. 데이터 캐시 - 1 (이론) 강의 영상 누락

0

26

1

2026.04에 추가된 강의 시청 불가

0

27

1

비전공자인데 AI가 발전한 요즘 백엔드로 진로를 하고 싶으면 어떤식으로 공부를 해야 하는지 알 수 있을까요???

0

60

1

STOMP에서 메세지를 전송하는 방법에 대해

0

89

1

JWTDecodeException 에러가 나옵니다.

0

144

2

서비스 구동하며 테스트와 디버깅하기 - 1 에서 기동하는 방법

0

118

2

MySQLConfig 관련 질문있습니다.

0

168

2

ChatListResponse에 @Valid을 붙인 이유

0

133

2

checkTokenForRefresh에 대해 궁금한점

0

112

2

Client 파일은 어떤 IDE로 실행시키나요??

0

188

2

독립적인 Transactional을 둔 이유

2

140

2

springdoc이 무슨 설정인가요??

1

120

2

JwtProvider 를 Component 로 선언하신 이유가 궁금합니다.

0

199

2

안녕하세요 MySqlConfig 설정에 대해 질문이 있습니다.

0

125

2

MySQL을 미리 설정을 해놔야할까요?

0

174

3

./gradlew clean build 하면 오류가 생깁니다.

0

1176

2

작동하는 방법

0

175

2

Package 구성

0

145

2

@Transactional(transactionManager = "createChatTransacationMansger") 질문 있습니다.

0

182

2

강의 들으면서 블로그에 올려도 될까요?

0

181

2

실 서비스 환경 문의

1

261

2