[ N : 1 ]
데이터테이블의 1, N 관계에서 외래 키는 항상 N이 가지고 있다.
⇒ 양방향의 경우, 항상 N이 연관관계의 주인이다.
⇒ 양발향의 경우, @OneToMany를 선언한 쪽에서 mappedBy 속성을 지정해야 한다.
단방향
N에 @ManyToOne을 추가 한다.
N이 1을 조회하는 것만 가능하다. (반대는 불가능)
양방향
1에 @OneToMany를 추가한다.
연관관계의 주인을 mappedBy로 지정해준다.
서로를 조회할 수 있다.
예시 : 회원별 상품 API 구현
상품과 회원의 관계
- 상품 등록 시 누구의 상품인지 등록이 필요 ⇒등록을 요청한 회원 정보 추가 필요
- 상품 : 회원 = N : 1 ⇒ 한 명의 회원이 다수의 상품을 가질 수 있음
- 회원 객체에서 상품 객체를 조회하는 경우가 없기 때문에 상품과 회원을 N:1 단방향 연관관계로 설정
// Product Class
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id", nullable = false)
private User user;
[ 1 : N ]
연관관계의 주인을 1에 둔 것이다.
entity를 1개 이상 참조하기 때문에 컬렉션을 이용한다.
단방향
@OneToMany에 mappedBy가 사라진다.
대신 @JoinColumn을 이용해서 조인한다. 1:N 단방향 mapping이 필요한 경우, 그냥 N:1 양방향 mapping을 사용하는게 더 좋다.
양방향
존재하지 않는다.
'스파르타 내배캠' 카테고리의 다른 글
[TIL] #25. HTTP 응답 상태 반환 (0) | 2024.05.28 |
---|---|
[TIL] #24. JWT (0) | 2024.05.24 |
[TIL] #22. 4주차 강의 (0) | 2024.05.22 |
[TIL] #21. spring 3주차 강의 (0) | 2024.05.21 |
[TIL] #20. Transaction (0) | 2024.05.20 |