
스프링
C:\springworkspace\Springboot

프로젝트로 열기

버전 17 확인

버전 17 확인

yml로 이름 변경
엔티티 관계를 먼저 설정해봅니다.


제목 중복x

spring말고 persistence 보통 이거 씀
Book PK
Review FK
뭘 만들어줘야하나

ORM 기술로 연결해야합니다.
FK는 상대의 Book id 가리킵니다.



Object 는 Book
DB로 보면 Fk는 Book id
Review에서도 걸고 N:1 , Book 에서도 걸어야합니다. 1:N

컬럼으로 만들면 안되고
//@OneToMany : LAZY 기본
@OneToMany (mappedBy = "book", cascade = CascadeType.ALL)
private List<Review> reviews;
review는 책정보가 있습니다.
책은
// FK(외래키)
@ManyToOne // 관계설정
// JPA야(Book book은 테이블의 컬럼으로 만들지 말고 )
// FK로 만들어 줘
@JoinColumn(name="book_id", referencedColumnName = "id", nullable = false)
private Book book;


mapped by 로 1번에 해당하는것만 가져옵니다.
여러개라서 List<> 사용합니다.
DB입장
DTO (오브젝트입장)
Book 타입 1개니까 List아님



일괄 한꺼번에 가져온다. 즉시로딩 Eager
나중에 가져온다. 지연로딩 Fetch (then then)
Eager는 연관된 데이터를 즉시 가져와서 간단하게 쓸 수 있지만, 필요 없는 데이터를 로딩할 수 있어 성능이 떨어질 수 있습니다.
Lazy는 필요한 시점에만 데이터를 로드해서 성능을 개선할 수 있지만, 잘못 사용하면 N+1 문제 같은 성능 문제를 일으킬 수 있습니다.

DB입장
사용자가 쓰는건 getAllBooks()