blo*_*low 5 java inheritance annotations hibernate jpa
我有这种情况:
我有一个实体,Person其中包含一个人的所有个人详细信息,如出生日期,街道地址,市政府ecc ecc.我有一个实体ClubMember描述俱乐部的成员,并包含一些领域,如:注册日期,成员类型,信用,ecc ecc
所以,a ClubMember是一个Person,我认为是正确的用继承描述这个:
ClubMember extends Person但是,什么类型的策略?
我会获得两个表中的数据库,Person并ClubMember与ClubMember含有id_person像一个@OneToOne关系,但保留实体之间的继承; 这可能(并且是正确的)?
JOINED是最接近我的目标的策略,但我失去了ID表的领域ClubMember,实际上ID成了ID表Person...
糟糕,在选择某种继承策略时,您应该保留性能问题。在这里,您可以看到有关可用继承策略的深刻见解。不要忘记继承可以重新编写为关联,如下所示
代替
public class A {}
public class B extends A {}
Run Code Online (Sandbox Code Playgroud)
您可以使用
public class B {
private A a;
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用MapedSuperClass使用任何Hibernate / JPA继承策略来映射所有继承的属性。看这里
使用默认的JPA / Hibernate批注时,请记住,Hibernate总是获取所有子类。如果您具有单个层次结构,则建议使用“单表继承”策略。当您具有复杂的层次结构时,联接策略的设计会更好,但是由于查询任何实体时的性能问题,联接策略会受到影响。