ERD와 SQL 참고하여 요구사항에 맞게 연관관계 구현
step 1
책 재고가 부족하여 다음주에 책들이 새롭게 들어오기로 했습니다.
책을 서점에 등록하려고 합니다. 책(Book) 과 서점(BookStore)의 연관관계를 맺어보세요!
다대일 단방향 연관관계를 적용해주세요.
//--------------------------------------------------------------------------------------
// 경로1. /com/exmple/spring_week_2_test/entity/Book
// id제외) 기본 컬럼 생성 부분과 서점으로 단방향 구현
//--------------------------------------------------------------------------------------
@Column(nullable = false)
private String author;
@Column(nullable = false)
private String name;
@Column(nullable = false)
private int price;
@Column(nullable = false)
private Long quantity;
@ManyToOne
@JoinColumn(name = "book_store_id")
private BookStore bookStore;
//-------------------------------------------------------------------------------------------
// 경로2. /com/exmple/spring_week_2_test/entity/BookStore
// id제외) 기본 컬럼 생성 부분, 연관 관계 없음
//-------------------------------------------------------------------------------------------
@Column(nullable = false)
private String location;
@Column(nullable = false)
private String name;
step 2
서점(BookStore)에서 책(Book)을 관리하려고 하는데 현재 구조로는 개발 하기가 불편하네요.
연관관계를 수정해 보세요!
다대일 양방향 연관관계를 적용해주세요.
//--------------------------------------------------------------------------------------
// 경로1. /com/exmple/spring_week_2_test/entity/Book
// step1과 동일 변동사항 없음
//--------------------------------------------------------------------------------------
// 경로2. /com/exmple/spring_week_2_test/entity/BookStore
// OneToMany추가로 양방향 구현
//--------------------------------------------------------------------------------------
@OneToMany(mappedBy = "bookStore")
private List<Book> books;
step 3
항해서점 제주점이 드디어 회원제를 적용하기로 했습니다.
서점(BookStore)에서 회원(Member)을 관리할 수 있도록 연관관계를 맺어보세요!
일대다 단방향 연관관계를 적용해주세요.
//--------------------------------------------------------------------------------------
// 경로1. /com/exmple/spring_week_2_test/entity/BookStore
// 일대다 단방향 구현
//--------------------------------------------------------------------------------------
@OneToMany
@JoinColumn(name="book_store_id")
private List<Member> member;
//--------------------------------------------------------------------------------------
// 경로2. /com/exmple/spring_week_2_test/entity/Member
// id제외) 기본 컬럼 생성 부분, 연관 관계 없음
//--------------------------------------------------------------------------------------
@Column(nullable = false)
private String address;
@Column(nullable = false)
private String email;
@Column(nullable = false)
private String nickname;
@Column(nullable = false)
private String password;
@Column(nullable = false)
private String phoneNumber;
step 4
항해서점 제주점에서 회원(Member)이 구매한 책(Book)을 관리하려고 합니다.
회원(Member)과 책(Book)의 연관관계를 맺어보세요!
다대다를 사용하지 말고 구현해 보세요.
구매(Purchase) Entity를 사용하세요.
// * 다대다 관계를, 구매를 Many로 설정하고 다대일과 일대다로 풀어냄
//--------------------------------------------------------------------------------------
// 경로1. /com/exmple/spring_week_2_test/entity/Member
// 일대다 관계 설정
//--------------------------------------------------------------------------------------
@OneToMany(mappedBy = "member")
private List<Purchase> purchase;
//--------------------------------------------------------------------------------------
// 경로2. /com/exmple/spring_week_2_test/entity/Book
// 일대다 관계 설정
//--------------------------------------------------------------------------------------
@OneToMany(mappedBy = "book")
private List<Purchase> purchase;
//--------------------------------------------------------------------------------------
// 경로3. /com/exmple/spring_week_2_test/entity/Purchase
// 다대일로 각각 설정 (id 제외
//--------------------------------------------------------------------------------------
@ManyToOne
@JoinColumn(name = "member_id")
private Member member;
@ManyToOne
@JoinColumn(name = "purchase_id")
private Book book;
완성된 다이어그램
'Experience > 항해99' 카테고리의 다른 글
본수업 23일차 / 스프링 심화 주차 : S.A. (2) | 2022.12.09 |
---|---|
본수업 22일차 / 스프링 숙련 주차 : 개인 과제 질문편 (0) | 2022.12.08 |
022 - 본수업 3주차 / 스프링 입문 주차 : 개인 과제 구현편 정리 (2) | 2022.12.01 |
021 - 본수업 15일차 / 스프링 입문 주차 : 개인 과제 질문편 (2) | 2022.11.30 |
018 - 본수업 12일차 / Spring JPA (Java Persistence API) (1) | 2022.11.26 |