2012-09-12 4 views
2

hibernate 문서에 따라, hibernate 팀은 join 테이블없이 하나의 단방향 매핑을 사용하지 않을 것을 강력하게 제안합니다. 나는 그것이 performace 문제 때문에 이것인지 알고 싶습니다. 또는 뒤에 다른 이유가 있습니다. 이 매핑이 이렇게 많은 전화 no.s를 할 수있는 직원이 있다면 내가 가진 것joinColumn을 사용한 단방향 일대 다 매핑

@Entity 
public class Employee { 
... 
@OneToMany 
@JoinColumn(name="employee_fk") 
public List<Phone> phones; 
... 
} 

@Entity 
public class Phone { 
... 
} 

내가 여기에 어떤 문제를 볼 해달라고 그래서 Hibernate는 외래 키와 전화 테이블을 생성합니다. 또한 저는 전화 클래스에 직원 속성이 있기를 원하지 않습니다. Hibernate 팀은 그런 경우 join 테이블을 사용하도록 권고하지만 왜 불필요하게 하나의 테이블을 생성해야합니까?

답변

2

성능에 관한 질문보다 설계상의 문제입니다. 전화가 할당 된 직원에 대해 전화가 알지 못한다고 생각하면 Phone 엔티티가 Employee 엔티티와 독립적이라는 것을 의미합니다. Employee 엔티티와 독립적 인 경우 Employee 테이블에 외래 키가 없어야합니다.

또한 전화는 직원에 대해 알지 못하기 때문에 잠재적으로 재사용되고 회사, 고객 등 다른 유형의 엔터티와 연결될 수 있음을 의미합니다. 모든 사람에게 외래 키를 갖는 것은 의의가 있습니다 엔티티는 전화 테이블 자체에 전화를 가질 수 있습니다. 두 번 DB에 충돌하는 단방향 매핑 최대 절전 모드의 경우

2

, 같은 직원 요한없이, 그것은이

같은 뭔가를해야만이 PHN없이 테이블에 새 휴대 전화를 삽입 할 수 없습니다 새 휴대 전화에 대한

갱신없이 테이블 PHN 없음이 PHN와 직원 ID (존)

더 나아가 귀하의 휴대 전화 지속성 클래스를 매핑하고 내가 생각하는, 그렇지 않으면 휴대 전화 클래스가 다시 사용됩니다 특정 직원에 등록해야합니다 너는하고 싶지 않아.

관련 문제