SpringBoot with JPA 프로젝트(M:N) 1.다대다 관계프로젝트 설계

mingki·2022년 3월 6일
0

SpringBoot & JPA

목록 보기
20/26


📚 공부한 책 : 코드로배우는 스프링 부트 웹프로젝트
❤️ github 주소 : https://github.com/qkralswl689/LearnFromCode/tree/main/mreview2022

1.프로젝트 구성

회원이 영화에 대한 평점과 감상을 기록하는 시나리오를 기반으로 프로젝트를 구성한다

  • 한 편의 영화는 여러 회원으 평가가 행해질 수 있다
  • 한 명의 회원은 여러 영화에 대해서 평점을 줄 수 있다

2.M:N(다대다)관계의 특징

M:N(다대다) 관계는 논리적인 설계와 실제 테이블 설계가 다르다
또한 실제 테이블로 설계할 수 없다 -> 해결하기 위해 실제 테이블 설계에서 맵핑(mapping) 테이블을 사용한다
* 맵핑테이블 : 연결테이블, 두테이블의 중간에서 필요한 정보를 양쪽에서 끌어서 쓰는 구조
- 맵핑 테이블의 작성 이전에 다른 테이블들이 먼저 존재해야 한다
- 주로 명사가 아닌 동사나 히스토리에 대한 데이터를 보관하는 용도이다
- 중간에서 양쪽의 PK를 참조하는 형태로 사용한다

3.JPA에서 M:N(다대다) 처리

  • @ManyToMany를 이용한 처리
    -> 각 엔티티와의 맵핑 테이블이 자동으로 생성되는 방식 : 잘 사용하지 않는다, 하나의 객체를 수정하는 경우 다른 객체의 상태를 매번 일치하도록 변경하는 작업은 매우 번거롭기 때문
  • 별도의 엔티티를 설계하고 @ManyToOne을 이용해 처리
profile
비전공초보개발자

0개의 댓글