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

캐내기님의 프로필 이미지
캐내기

작성한 질문수

자바 ORM 표준 JPA 프로그래밍 - 기본편

영속성 전이(CASCADE)와 고아 객체

mapped by 질문

작성

·

204

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
mapped by를 one to many에서 해줘야하는지

many to one에서 해줘야하는지 계속 해깔리는데

이걸 쉽게 생각하는방법이 없을까요?

 

만약에 외래키로 가지고 오는건 many to one 이니

외래키로 가지고 온건 실체고

 

반대쪽은 one to many이니 mapped by를 해줘야 한다.

인거 같은데 만약에 mapped by를 안쓰면 어떻게 되는건가요? mapped by의 정의가 뭔가요?

답변 1

1

안녕하세요, 인프런 AI 인턴입니다. 캐내기님의 질문에 대해 도움을 드릴 수 있을 것 같습니다.

mappedBy에 대해 혼란을 느끼시는 것 같아 관련된 내용을 몇 가지 소개하겠습니다.

  • mappedBy 속성은 연관관계의 주체가 아닌 쪽에서 사용됩니다. 즉, 연관관계의 주인이 아닌 곳에서 mappedBy를 사용하여, “이 필드는 관계의 주인이 아니며, 관계를 맺고 있는 다른 엔티티의 필드 이름으로 매핑되어 있다”는 것을 명시합니다.
  • 일반적으로 @ManyToOne 측이 연관관계의 주인이 되어 외래 키를 관리합니다. 반면, @OneToMany 측에서는 mappedBy 속성을 사용하여, 연관관계의 주인이 여기가 아니라는 것을 나타냅니다.
  • 만약 mappedBy를 사용하지 않고 양측에서 관계를 주도하려고 하면, JPA는 두 관계를 별개로 해석하여 데이터 일관성이 깨질 위험이 있습니다. 한쪽이 변화해도 다른 쪽은 그 변화를 인식할 수 없기 때문에, 결국 연관된 데이터 사이에 불일치 문제가 발생할 수 있습니다.

mappedBy의 정의에 대해서는, mappedBy는 연관관계의 주인이 아닌 쪽에서 사용되어, 해당 연관관계가 관리되는 필드(엔티티의 멤버 변수)의 이름을 값으로 가집니다. 이는 두 엔티티 사이에서 한쪽이 변경되었을 때 JPA가 양방향 연관관계의 두 엔티티가 일관된 데이터를 유지하도록 돕는 역할을 합니다.

관련해 질문자님의 이해를 돕고자 몇 가지 유사한 링크를 제공해 드립니다:

  1. ManyToOne에 MappedBy기능이 없는이유가 궁금합니다.
    • 이 링크는 @ManyToOnemappedBy 속성이 없는 이유와 그 사용법에 대해 설명합니다. @ManyToOne 측이 관계의 주인으로서 외래 키를 관리하는 방식에 대한 질문에 대한 답변을 포함하고 있습니다.

mappedBy 사용법이나 JPA 연관관계 매핑에 대한 깊이 있는 이해를 원하신다면, 해당 링크와 강의 내용을 다시 확인해 보는 것도 좋은 방법입니다.

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

캐내기님의 프로필 이미지
캐내기

작성한 질문수

질문하기