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

jj93913님의 프로필 이미지
jj93913

작성한 질문수

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

다대다 [N:M]

다대다를 다대일 일대다로 사용하면 안되는 걸까요?

작성

·

318

0

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

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

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

[질문 내용]

 

안녕하세요! 다대다 매핑 관련하여 질문드립니다.

 

강의에서도 그렇고

구글링을 했을 때도 그렇고 다대다 매핑을 항상

@oneToMany @ManyToOne 으로 매핑을 하더라구요!

 

그러다가 문득

@ManyToOne @OneToMany로 다대다를 풀어내는 경우는

아예 없는건지 궁금해졌습니다.

제가 지금 사이드 프로젝트를 하고 있는데

erd를 @ManyToOne @OneToMany로 해놨었거든요..!

 

  1. 이 경우에 어떤 문제가 발생하는지

     

  2. 실무에서는 아예 사용하지 않는 다대다 매핑 방법인지

     

  3. 사용한다면 어떤 경우에 사용되는 것인지가

궁금합니다..!

 

답변 1

1

안녕하세요. jj93913님, 공식 서포터즈 코즈위버입니다.

어떤 엔티티 사이의 M:N 관계는 1:N, N:1로 풀 수 밖에 없습니다.

가령 Member엔터티에 'A', 'B' 가 있고 Team엔터티에 '가', '나' 가 있다고 가정하겠습니다.

Member 'A'가 Team '가','나' 양측에 속해있으며, Member 'B'는 Team '가'에만 소속 되어 있다고 하고,

이 둘 사이의 중간엔터티(TeamMember)를 이용하여 풀어내면 아래와 같습니다.

[1, A, 가], [2, A, 나], [3, B, 가]

  • 숫자 1,2,3 은 TeamMember의 인조식별자

 

이는 Member 입장에서 MemberTeam을 보면 1:N 인 형태이며, Team 입장에서 Team입장에서 MemberTeam을 보아도 1:N 상태, 즉 1:N, N:1 로 풀어낸 상태가 됩니다.

다른 형태로 풀어내는 모습은 상상하기 힘듭니다.

 

감사합니다.

jj93913님의 프로필 이미지
jj93913

작성한 질문수

질문하기