아직 DB를 수박겉핧기만 했지만, JPA를 학습하다보면 DB를 깊이 알아야할 것 같은 압박을 느끼곤 한다...
단순히 CREATE, DROP 같은 단순구조를 벗어난 연관관계를 알아야하는데
이게 도통 감이 안잡힌단 말이지..

DB 관련 공부는 슬쩍 미뤄두고..
1:N (OneToMany)
N:1 (ManyToOne)
1:1 (OneToOne)
N:N (ManyToMany)
이중 N:N 에대해서 고민이 생겼다. 다대다 관계..
회원이 주문을 한다.
회원은 주문을 여러개 할수있다.
@Entity
@Getter @Setter
public class Member {
@Id @GeneratedValue
private Long id;
private String name;
// ->> 이부분이문제다 .. 회원은 List로 여러주문을 할수있다.
private List<Order> orders = new ArrayList<>();
주문은... 여러사람이 할수있다.
@Entity
@Getter @Setter
public class Order {
@Id
@GeneratedValue
private Long id;
//---> 맴버타입을 불러올꺼다.
private Member member;
그러면..
회원이 주문을 많이할수도있고, 주문도 여러회원을 가질수있으니 N:N 아닌가 ?
지피티랑 학습중인 나는 질문을 이어갔다 .
1개의 오더는 회원이 구매하지만 회원은 여러명일수있어
그럼 여러 오더가 되서 N:N 아닌가 ?
문장을 어떻게 해석하느냐에 따라 N:N처럼 착각하기 쉬운 부분이야. 정리해줄게.1️⃣ 올바른 해석
즉 @OneToMany ↔ @ManyToOne 관계가 맞아. 2️⃣ 왜 N:N처럼 보이나?네가 말한 문장:여기서 “회원은 여러 명일 수 있어”를 동일 주문(Order)을 여러 회원이 나눠 갖는다로 오해한 거야. 근데 전자상거래/도메인 모델 상 하나의 주문은 딱 한 명의 회원에게만 귀속돼. (주문 ID = 주문자 1명)
3️⃣ 한 줄 요약 외우기
|
그럼 ... 내가 헷갈리는 부분은
"1명의 회원이 N 개의 주문을 할수있다." +
"1명의 회원이 N 개의 주문을 할수있다." +
"1명의 회원이 N 개의 주문을 할수있다." +
이걸 3명의 회원이 주문했으니 주문1 = 회원N 관계까 성립한다고 이해한거 같은데.. 그러면 안되는 모양이다.
그런데 당최 상황이 계속 바뀌고 요구사항이 매번달라지는데 .. 이걸 N:N 인지 1:N 인지 정의하는게 쉬운일은 아닌거같다..

'DB' 카테고리의 다른 글
| 다 대 다 연관관계 - 2 (0) | 2025.09.04 |
|---|