spring new.ver2

정재호·2024년 9월 23일

https://start.spring.io/

스프링
C:\springworkspace\Springboot


프로젝트로 열기

버전 17 확인


버전 17 확인


yml로 이름 변경

엔티티 관계를 먼저 설정해봅니다.


제목 중복x


spring말고 persistence 보통 이거 씀

Book PK
Review FK
뭘 만들어줘야하나

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

JPA 관계설정이 중요합니다.


  • ManyToOne은 컬럼 아니고 FK

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아님


JPA에서 가지고 오는 전략

일괄 한꺼번에 가져온다. 즉시로딩 Eager

나중에 가져온다. 지연로딩 Fetch (then then)

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


DB입장

사용자가 쓰는건 getAllBooks()

profile
성장하는 하루가 되자

0개의 댓글