2010-05-21 6 views
9

Hibernate 튜토리얼에서, 25 장의 베스트 프랙티스는 중간 링크 클래스를 사용하는 many-to-many 대신에 2 개의 one-to-many 관계를 사용해야한다고 말한다. 그 이점은 무엇인지 알 수 없습니다. 다차원이이 중간 링크 역할을하는 조인 테이블을 생성 할 수있는 반면 3D 엔티티를 만드는 것이 더 나은 이유는 무엇입니까? 그러나이 권장 사항은 충분한 이유가 있어야합니다.1 many-to-many 대신에 one-to-many

누군가이 권장 사항에 대한 근거를 설명 할 수 있습니까? 감사합니다.

답변

8

다 대다 관계는 관계의 참가자 중 하나가 아닌 내고편 — 추가 데이터를 자주 개발합니다. 내 경험상 예외가 아니라 표준입니다. 예를 들어 멤버와 그룹은 다 대다 방식으로 연결될 수 있으며 멤버가 그룹에 가입 한 시점, 멤버 자격 상태 (신규, 보류 중, 일시 중단됨 등)를 알고 싶습니다.

관계를 직접적으로 many-to-many로 모델링하고 그에 따라 모든 코드를 작성하는 경우 조인 테이블에 가장 먼저 추가되는 열이 모델과 일련의 코드를 손상시킵니다.

+0

+1 (그리고 many-to-many 테이블을 사용하지 않는 것에 대한 성능상의 이유가 있다고 생각합니다 : 최대 절전 모드는 조인 테이블을 업데이트 할 때 어려움이 최적이 될 것입니다.) – Thierry

+0

@Thierry, "많은 다 대다 관계 (many-to-many relationship)를 모델링 할 때 "- 대 - 다"테이블 (나는 그것을 조인 테이블이라고 부른다)을 선호한다. 내가 말하고자하는 것은 당신이 조인 테이블을 가져서는 안된다는 것이 아니라, ORM에서 조인 테이블을 직접 모델링해야한다는 것입니다. –

+0

네, 전적으로 당신과 동의합니다, 그리고 제가 쓴 것의 오타가 있습니다 : 나는 many-to-many가 2 대 다 대일보다 효율적이지 않을 것이라고 말하고 싶었습니다. 'for using'을 쓰고 싶었습니다. 이것은 꽤 반대 의미입니다. -_-). 따라서 조인 테이블에 다른 속성이 없어도 엔티티로 매핑하는 것이 좋습니다. – Thierry