본 포스팅은 인프러의 JPA 기본편을 수강하고 정리하는 내용입니다.
배송, 카테고리 추가 - 엔티티
- 주문과 배송은 1:1(
@OneToOne
) - 상품과 카테고리는 N:M(
@ManyToMany
)
배송, 카테고리 추가 - ERD
배송, 카테고리 추가 - 엔티티 상세
만약 상위 카테고리가 존재한다면 아래처럼 활용할 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@Entity
public class Category {
@Id
@GeneratedValue
private Long id;
private String name;
@ManyToOne
@JoinColumn(name = "PARENT_ID")
private Category parent;
@OneToMany(mappedBy = "parent")
private List<Category> child = new ArrayList<>(); // 양방향 일때 자식 카테고리를 담을 멤버 변수
}
N:M 관계는 1:N, N:1로
- 테이블의 N:M 관계는 중간 테이블을 이용해서 1:N, N:1
- 실전에서는 중간 테이블이 단순하지 않다.
- @ManyToMany는 제약: 필드 추가X, 엔티티 테이블 불일치
- 실전에서는 @ManyToMany 사용X
@JoinColumn
외래 키를 매핑할 때 사용한다.
@ManyToOne - 주요 속성
- 다대일 관계 매핑
@OneToMany - 주요 속성
- 다대일 관계 매핑