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