글쎄, 차이점은 객체를 사용하여 반영하려는 디자인에 있습니다.
귀하의 경우 모든 Question
은 Categories
에 할당 될 수 있습니다. 따라서 @*ToMany
의 기호입니다. 이제 여부를 결정해야한다 :
- 각
Category
단 하나의 Question
이 (가 다른 종류가 같은 질문를 참조 할 수 없음을 의미 독특한 제약을 초래할 것)에 할당 할 수 있습니다 -이 것 이 @ManyToMany
관계가 될 것입니다 - 각 Category
이 할당 여러 Questions
을 가질 수
@OneToMany
관계가 될합니다 (Category
테이블에 고유 제한 조건이있을 수 없습니다).
@OneToMany (질문 -> 카테고리)
이 관계는 명시 적
@JoinTable
를 사용하여 이렇게 정의하거나 경우에만 테이블을 조인으로 표현 될 수있다
그것은 단방향 관계가있을 때 어떤 소유 측면에서 '한쪽'입니다 (Categories
의 컬렉션이있는 Question
엔티티에 있지만 Categories
에는 Question
에 대한 참조가 없음).
생각해 보면 조인 테이블이 사용되는 것이 합리적입니다. DBMS가 Categories
테이블에 복수 행이있는 Question
테이블의 한 행 사이의 연결을 저장할 수있는 다른 방법은 없습니다.
그러나 양방향 관계를 모델링하려면 Category
('Many'면)이 관계의 소유 면임을 지정해야합니다.이 경우 Category
행에 각각 Question
만 연결할 수 있기 때문에 DBMS는 Category
테이블에 외래 키가있는 조인 열을 만들 수 있습니다.
이렇게하면 조인 테이블이 아닌 단순 외래 키 (여전히 시작 부분이 가리키는 것처럼 @JoinTable
을 사용하여 조인 테이블을 만들 수 있습니다). 이 관계 조인 테이블로 표현되어야
@ManyToMany. 기본적으로 단방향 @OneToMany
관계와 매우 유사하게 작동하지만이 경우 Categories
에서 여러 행으로 결합 된 Question
의 행이 여러 개있을 수 있습니다.
대단한 설명. 더 많은 upvotes가 있어야합니다. – LppEdd