N:M은 쓰지말자
안되는 이유에 대해 알아볼테니 편하게 듣기
우선,
반면, 객체는 컬렉션을 사용해 객체 2개로 다대다 관계를 표현할 수 있다.
@ManyToMany
@JoinTable
을 사용해 연결 테이블을 지정해준다.- 단방향, 양방향 모두 가능하다.
그렇지만
어째어째 그래도 쓰겠다 하면 🤷🏻♀️
연결 테이블용 엔티티 (ex. MemberProduct.java를 생성해 @Entity
를 부여)를 추가해 연결 테이블을 엔티티로 승격해주면 됩니다.
@ManyToMany
➡️ @OneToMany
, @ManyToOne
아 맞다,, 나 프로젝트 없지,, 날렸지,, 만든다,,jpabook,,
예제 3에서는 배송 카테고리를 추가하겠다.
@OneToOne
@ManyToMany
앞서 말했듯 다대다 관계는 일대다, 다대일로 구현해야 한다.
중간 테이블을 이용하자.
(@ManyToMany
는 필드를 추가할 수 없고, 엔티티 테이블이 불일치한다. 그러므로 실전에서는 @ManyToMany
사용 금지)
📌
@JoinColumn
: 외래 키 매핑시 사용
📌
@ManyToOne
: 다대일 관계 매핑
📌
@OneToMany
: 다대일 관계 매핑