본문 바로가기

다대다

(3)
N:M(다 대 다) 매핑 3: 매핑테이블을 엔티티로 만들기 N:M 관계를 풀어낼 때 두 테이블을 엮기 위해 중간에 매핑테이블을 만들어야 한다. 그런데 이 때 매핑테이블을 @JoinTable과 @ManyToMany 어노테이션을 사용하여 만들면, 개발 도중에 발생하는 상황들에 대해 유연하게 대처하기 힘들어진다. 따라서 돌발상황이 많은 실무에서는 매핑테이블을 엔티티로 승격시키는 것이 좋다. 테이블 구조 Student:Subject는 N:M의 관계를 가지고 있고, 이를 매핑하기 위한 테이블로 StudentSubject를 사용하고 있다. 매핑테이블을 Entity로 사용했을 때의 장점을 살펴보기 위해 StudentSubject에 registrationDate 컬럼을 추가했다. 이번 시간에는 매핑테이블인 StudentSubject를 Entity로 만들어서 사용해볼 것이다! ..
N:M(다 대 다) 매핑 2: @ManyToMany와 @JoinTable 2021.05.20 - [JPA/양방향연관관계] - N:M(다 대 다) 매핑 1: 매핑테이블 N:M(다 대 다) 매핑 1: 매핑테이블 RDB에서는 정규화된 테이블 2개로 N:M 관계를 매핑하는 것이 불가능하다. (정규화란 Table을 아름답게 만드는 과정(?)이다. 정규화에 대해 더 궁금하다면 검색을!!!) 따라서 매핑테이블을 따로 추가 code-mania.tistory.com Entity 설계를 보기 전에 테이블이 어떻게 설계됐는지 여기서 먼저 확인해보자~~~ @ManyToMany와 @JoinTable 이번 글에서는 'N:M(다 대 다) 매핑 1: 매핑테이블'에서 설계했던 테이블을 Entity로 만들어볼 것이다. @ManyToMany와 @JoinTable 어노테이션을 사용해서 N:M 양방향 연관관계를 ..
N:M(다 대 다) 매핑 1: 매핑테이블 RDB에서는 정규화된 테이블 2개로 N:M 관계를 매핑하는 것이 불가능하다. (정규화란 Table을 아름답게 만드는 과정(?)이다. 정규화에 대해 더 궁금하다면 검색을!!!) 따라서 매핑테이블을 따로 추가해서 N:M 관계를 풀어내야 한다. 매핑 테이블 만들어보기 학생이 수강신청을 한다고 해보자. 학생은 여러 과목을 수강신청할 수 있고, 한 과목은 여러 학생에 의해 수강신청될 수도 있다. 여기서 학생은 Student이고 과목은 Subject라고 한다면, Student:Subject = N:M(다 대 다)관계가 성립한다. 하지만 DB에서 테이블 2개로 N:M 관계를 매핑할 수 없다. 그래서 Student, Subject와 더불어 매핑테이블이 추가로 설계된다. 매핑테이블로 StudentSubject이라는 테이..