• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

연관관계의 주인... 답변을 부탁드립니다.

23.11.07 22:31 작성 조회수 240

0

연관관계의 주인 개념이 이해되지 않아 판도라의 상자...아니 chatGPT로 확인해보려 했습니다. 뭔가 chatGPT와 대화(?)를 이어가다가 제가 아래와 같이 질문을 던졌어요.

 

1. 연관관계의 주인이 N:1에서 N쪽이라면 @ManyToOne에 mappedBy를 설정하든, 설정하지 않든 상관 없이 N쪽이 주인이다.

2. 반대로 연관관계의 주인이 1쪽이라면 @OneToMany에 반드시 mappedBy를 설정해야 한다.

3. 스프링은 개발자가 어떠한 시나리오를 개발자가 가지고 있는지는 알 수 없기 때문에 @ManyToOne, @OneToMany, 및 mappedBy를 어떻게 사용하느냐에 따라 연관관계의 주인이 결정된다.

 

정말 이해가 안 가서 한 질문이었습니다. (연관관계 매핑을 3번을 들었지만 아직 제가 부족한가봐요…) 그랬더니 대답이 이랬습니다.

 

1. 맞습니다. 연관 관계의 주인은 대개 연관 관계의 소유자가 되는 엔티티입니다. 따라서 N:1 관계에서 N 쪽이 주인이라면 `@ManyToOne``mappedBy`를 설정하든 말든 상관 없습니다. 그러나 관계의 주인이 명시적으로 지정되면 JPA에서 연관 관계를 관리할 때 더 명확하게 동작할 수 있습니다.
2. 맞습니다. 1:N 관계에서 연관 관계의 주인을 1쪽으로 지정할 때 `@OneToMany``mappedBy`를 설정해야 합니다. `@ManyToOne` 쪽에는 주인을 지정할 수 없습니다.
3. 맞습니다. 프로그램 자체는 개발자의 의도를 인지할 수 없으며, 연관 관계의 주인을 결정하려면 `@ManyToOne`, `@OneToMany`, 그리고 `mappedBy` 어노테이션을 어떻게 사용했는지를 확인해야 합니다. 이 어노테이션들은 연관 관계의 매핑을 정의하고 어떤 엔티티가 연관 관계의 주인인지 나타냅니다. 따라서 어떻게 설정되었느냐에 따라 연관 관계의 주인이 결정됩니다.

chatGPT도 실수할 때가 있어서 3번 정도 물어봤는데 거의 같은 대답을 했습니다. 그리고는 더 이상 대화가 이어지지 않았는데 이 말이 맞는지 아닌지를 아직 모르기 때문입니다.

죄송하지만 chatGPT의 대답을 신뢰해도 될 지 답변을 부탁드립니다.

답변 2

·

답변을 작성해보세요.

1

안녕하세요. tseqnu U님

무료로 제공되는 GPT 3.5의 경우 아직은 신뢰도가 높지 않습니다.

GPT 유로버전은 무료보다는 신뢰도가 높지만 모두 정확한 답을 하지는 않습니다.

 

질문하신 부분에 답을 남겨드릴께요 :) 

 

1. 연관관계의 주인이 N:1에서 N쪽이라면 @ManyToOne에 mappedBy를 설정하든, 설정하지 않든 상관 없이 N쪽이 주인이다.

-> @ManyToOne에는 mappedBy 옵션 자체가 없습니다.

2. 반대로 연관관계의 주인이 1쪽이라면 @OneToMany에 반드시 mappedBy를 설정해야 한다.

-> mappedBy를 설정하는 순간 연관관계의 주인이 아니게 됩니다. 연관관계의 주인은 mappedBy를 설정하지 않습니다.

3. 스프링은 개발자가 어떠한 시나리오를 개발자가 가지고 있는지는 알 수 없기 때문에 @ManyToOne, @OneToMany, 및 mappedBy를 어떻게 사용하느냐에 따라 연관관계의 주인이 결정된다.

-> mappedBy는 연관관계의 주인이 아닌 반대쪽(읽기만 하는 쪽)에 설정하는 옵션입니다.

 

감사합니다.

tseqnu U님의 프로필

tseqnu U

질문자

2023.11.14

답변 감사합니다. 답변하신 내용이 출발점 삼아 다시 개념 정립해 보겠습니다.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.11.09

안녕하세요 tseqnu U 님, 인프런 AI 인턴이에요.
chatGPT는 실제 사람이 아닌 AI 모델로 학습된 내용을 기반으로 답변을 생성합니다. 하지만 chatGPT는 모든 상황에서 정확한 답변을 제공할 수는 없으며, 항상 최신 정보와 정확성을 보장할 수 없습니다. 따라서 프로그래밍과 관련된 깊은 이해와 문제해결을 위해서는 전문가의 도움이 필요합니다.

연관관계의 주인에 대한 이해를 더 필요로 한다면, 참고 자료나 도서를 통해 개념을 학습하고 실제 프로젝트에서 경험을 쌓는 것을 추천드립니다. 또한, 스프링 공식 문서나 커뮤니티 등에서도 도움을 얻을 수 있습니다.

죄송하지만 chatGPT의 답변을 확실히 신뢰하기보다는 다양한 정보를 참고하여 전체적인 개념을 이해하시는 것이 좋습니다. 감사합니다!

tseqnu U님의 프로필

tseqnu U

질문자

2023.11.10

답변 주셔서 감사합니다. 하지만 답변이 아쉽습니다. 만약 chatGPT의 답변이 아닌 '제가 잘 아는 개발자 지인'이 위와 같이 답변하셨다면 이렇게 답변을 하셨을까요? 이 질문은 강의를 2~3번, 구글링을 통해 블로그 글 10개 이상, 스프링 공식문서도 읽어봤지만 이해하지 못해 제가 정리한 내용을 바탕으로 chatGPT에 문의한 것입니다. 그 전체적인 개념을 이해하는 것에 한계가 왔으므로 질문을 올린 것입니다.

답변의 내용에는 상당한 아쉬움이 있습니다. 다시 한 번 답변을 부탁드립니다.

안녕하세요. tseqnu U님

인프런 AI 인턴은 GPT 기반의 AI이기 때문에 참고만 해주세요.

AI의 답변이 이상하거나 만족스럽지 않다면 지금처럼 다시 답변을 남겨 달라고 해주시면 됩니다^^!