2011-03-31 2 views
0

저는 프로젝트에서 간단한 상속 관계를 가지고 있으며, 수퍼 클래스를 추상적으로하고 싶습니다 . 상속하는 클래스 중 일부는 추가 데이터베이스 정보가 필요하지만 다른 클래스는 그렇지 않습니다. 나는 어떤 상속 전략을 사용할 지 모르겠습니다.Hibernate - 추상이 아니고 서브 클래스가 테이블을 필요로하지 않는 클래스에 어떤 상속 전략을 사용해야합니까?

기상 조건에 관해서는 솔직한 대답을 찾을 수없는 것 같습니다. 수퍼 클래스는 JOINED 전략으로 추상 클래스를 가질 수 있습니다.

하위 클래스의 수가 너무 커지지 않을 것이며 어떤 것도 개가 넘지 않아서 개의 추가 데이터가 있어야하므로 아마도 SINGLE_TABLE이면 충분할 것입니다.

정말 아무 이유없이 추가 테이블을 갖고 싶지 않으므로 TABLE_PER_CLASS가 부적절합니다.

모든 안내를 부탁드립니다.

감사

답변

3

서브 클래스 테이블이 필요하지 않은 경우, 나는 거의 언제나 상속하는 하나의 테이블 접근 방식을 사용합니다. 어떤 이유로 테이블을 필요로하는 서브 클래스 중 하나에 부적절한 추가 필드 (예 : 10+)가있는 경우, 추가 데이터는 일부 서브 클래스에 대해 별도의 테이블을 작성하고 다른 테이블에 대해 플 '테이블을 작성해야 함을 나타낼 수 있습니다.

이것이 어떻게 최대 절전 모드에서 매핑 될지 확신 할 수는 없지만 모델링하는 것이 현명한 방법이라고 생각합니다.

+0

감사합니다. 그것이 내가 생각한 것입니다. JOINED 전략이 더 나을지 아직 확실하지 않습니다. – idbentley

+0

@Stefan 귀하의 의견을 정말로 기쁘게 생각합니다. 직장에서의 프로젝트 상속이 사용되었습니다. 대부분의 데이터 필드는 유사하지만 각 서브 클래스에는 하나 또는 두 개의 (때로는 몇 개 더 많은) 고유 필드가있을 수 있기 때문에 '마스터'엔티티와 약 17 개의 하위 클래스 엔티티가 있습니다. 처음에는 17 개의 테이블이 있기 때문에 사용자가 하위 클래스 유형을 변경하거나 쿼리에서 17 개의 조인을 볼 수 있도록 허용하는 것과 같은 문제가 발생할 때까지이 방법이 옳았습니다. 따라서 적절한 경우 null 값을 가진 단일 테이블을 생각하면됩니까? 나는 아직 ORM 초보자이지만 마음 속에서 생각하고있었습니다. – theblang

0

너무 늦어서이 질문에 답할 수는 있지만 다른 사람들이 유사한 시나리오를 사용하면 도움이 될 수 있습니다.

SingleTable 전략을 사용하고 하위 클래스 중 하나에 더 많은 필드가 있고 별도의 테이블이 필요한 경우 @SecondaryTable 주석을 사용하여 해당 하위 클래스를 SecondaryTable로 표시하고 PrimaryKeyJoin (주석이 있음)을 사용하여 pk 컬럼의 수퍼 클래스와 조인하십시오. 또한 서브 클래스의 모든 필드는 @column 주석의 'table'속성을 사용하여 명시 적으로 secondaryTable에 매핑되어야합니다.