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;

 

 

 

완성된 다이어그램

+ Recent posts