1. Entity 연관 관계 매핑
1. 연관 관계 매핑 종류
① 일대일(1:1) - @OneToOne
② 다대일(N:1) - @ManyToOne
③ 일대다(1:N) - @OneToMany
④ 다대다(N:M) - @ManyToMany
2. 연관 관계 매핑 방향
- 데이터베이스 중심 설계 테이블에서 관계는 항상 양방향
- JPA 객체지향 중심 설계에서는 단방향, 양방향 존재
2. 일대일 단방향
1. 일대일 단방향 매핑
- cart ⟶ member
- Cart (장바구니) Entity 생성
- cart 테이블 생성
- cart 테이블 생성 후 alter 명령어로 외래키(FK) 지정
2. CartRepository
- 장바구니 조회를 위한 Repository
3. 장바구니 조회 테스트 (즉시로딩)
- 장바구니 조회 테스트 클래스 생성 및 DI
- cart 조회 결과에서 member 정보 추출
- Cart 엔티티를 조회할 때, 매핑된 엔티티도 한 번에 조회 (=즉시 로딩)
3. 다대일 단방향
1. 다대일 단방향 매핑
- cart ⟵ cart_item ⟶ item
- 하나의 장바구니에는 여러 아이템이 존재, 하나의 아이템은 여러 장바구니에 존재
- CartItem Entity 생성
- cart_item 테이블 생성
- cart_item 테이블 생성 후 alter 명령어로 각각 외래키(FK) 지정
4. 양방향 매핑
1. 연관 관계 주인
- 엔티티를 양방향으로 연관 관계를 설정하면 객체의 참조는 둘인데 외래키는 하나
- 연관 관계 주인 규칙
- 연관 관계의 주인은 외래키가 있는 곳으로 설정
- 연관 관계의 주인이 외래키를 관리(등록, 수정, 삭제)
- 주인이 아닌 쪽은 연관 관계 매핑 시 mappedBy 속성 값 지정
- 주인이 아닌 쪽은 읽기만 가능
2. 양방향 매핑
- member ⟵ orders ⇄ order_item
- 한 명의 회원은 여러 번 주문 가능, 한 번의 주문에 여러 개의 상품을 주문 가능
- 주문 상태 enum 클래스 생성
- Order Entity 생성
- OrderItem Entity 생성
3. 쇼핑몰 프로젝트 ERD

5. 다대다 매핑
1. 다대다 매핑
- 실무에서는 사용되지 않음 (연결 테이블에는 컬럼을 추가할 수 없음)
- 1:N ⇄ N:1 형태로 교차 엔티티를 사이에 둠
- @ManyToMany 코드
<code />
public class Item {
@ManyToMany
@JoinTable(
name = "member_item",
joinColums = @JoinColumn(name = "member_id"),
inverseJoinColumns = @JoinColumn(name = "item_id")
)
private List<Member> member:
}
'JAVA > SpringBoot Shoppingmall' 카테고리의 다른 글
[VSCODE] JPA 즉시로딩/지연로딩(Fetch EAGER,LAZY) (0) | 2022.06.27 |
---|---|
[VSCODE] JPA CASCADE, ORPHAN (영속성 전이) (0) | 2022.06.27 |
[VSCODE] SpringBoot 쇼핑몰(MVN) 페이지 권한 설정 (0) | 2022.06.27 |
[VSCODE] SpringBoot 쇼핑몰(MVN) 로그인/로그아웃 기능 구현 (0) | 2022.06.27 |
[VSCODE] SpringBoot 쇼핑몰(MVN) 회원가입 기능 구현 (0) | 2022.06.27 |