[Mini] 도서 관리 프로그램 - 3. 연관관계 설정

이용준·2023년 5월 12일
0

도서관리

목록 보기
3/4


위 ERD를 기준으로 연관관계 설정

연관관계 포스팅은 여기

1.관계

  1. Book -> Member (@ManyToOne, 단방향)
  2. Book <-> History(양방향)
    • @OneToMany
    • @ManyToOne
  3. History <-> Library(양방향)
    • @ManyToOne
    • @OneToMany

History는 교차 테이블 역할 수행


2.Entity

  • Book
package com.mini.library.domain.Book.entity;

import com.mini.library.domain.History.History;
import com.mini.library.domain.Member.entity.Member;
import lombok.*;

import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;

@Entity
@Getter
@AllArgsConstructor
@NoArgsConstructor
@Builder
@ToString(exclude = {"member","bookHistoryList"})
public class Book {
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long bid;

    private String bname;

    private String author;

    private String publisher;

    private boolean lend;

    @ManyToOne
    private Member member;

    @OneToMany(mappedBy = "book")
    private List<History> bookHistoryList = new ArrayList<>();

}
  • History
package com.mini.library.domain.History;

import com.mini.library.domain.Book.entity.Book;
import com.mini.library.domain.Library.entity.Library;
import com.mini.library.global.auditable.Auditable;
import lombok.*;

import javax.persistence.*;

@Entity
@Getter
@ToString(exclude = {"book","library"})
public class History extends Auditable {
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long hid;

    @ManyToOne
    @JoinColumn(name = "BOOK_ID")
    private Book book;

    @ManyToOne
    @JoinColumn(name = "LIBRARY_ID")
    private Library library;

}
  • Library
package com.mini.library.domain.Library.entity;

import com.mini.library.domain.History.History;
import lombok.*;

import javax.persistence.*;
import java.util.ArrayList;
import java.util.List;

@Entity
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Getter
@ToString(exclude = "libraryHistoryList")
public class Library {

    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long lid;

    private String lname;

    @OneToMany(mappedBy="library")
    private List<History> libraryHistoryList = new ArrayList<>();

}
  • Member
package com.mini.library.domain.Member.entity;

import lombok.*;

import javax.persistence.*;

@Entity
@Getter
@AllArgsConstructor
@NoArgsConstructor
@Builder
@ToString
public class Member {
    @Id @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long mid;

    @Column
    private String mname;

    @Column(unique = true)
    private String phone;

    @Column
    private String password;

}
profile
뚝딱뚝딱

0개의 댓글