多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 9.1\. 三种策略 Hibernate支持三种基本的继承映射策略: * 每个类分层结构一张表(table per class hierarchy) * 每个子类一张表(table per subclass) * 每个具体类一张表(table per concrete class) 此外,Hibernate还支持第四种稍有不同的多态映射策略: * 隐式多态(implicit polymorphism) 对于同一个继承层次内的不同分支,可以采用不同的映射策略,然后用隐式多 态来完成跨越整个层次的多态。但是在同一个`&lt;class&gt;`根元素 下,Hibernate不支持混合了元素`&lt;subclass&gt;`、 `&lt;joined-subclass&gt;`和`&lt;union-subclass&gt;` 的映射。在同一个`&lt;class&gt;`元素下,可以混合使用 “每个类分层结构一张表”(table per hierarchy) 和“每个子类一张表”(table per subclass) 这两种映射策略,这是通过结合元素`&lt;subclass&gt;`和 `&lt;join&gt;`来实现的(见后)。 在多个映射文件中,可以直接在`hibernate-mapping`根下定义`subclass`,`union-subclass`和`joined-subclass`。也就是说,你可以仅加入一个新的映射文件来扩展类层次。你必须在subclass的映射中指明`extends`属性,给出一个之前定义的超类的名字。注意,在以前,这一功能对映射文件的顺序有严格的要求,从Hibernate 3开始,使用extends关键字的时侯,对映射文件的顺序不再有要求;但在每个映射文件里,超类必须在子类之前定义。 ``` <hibernate-mapping> <subclass name="DomesticCat" extends="Cat" discriminator-value="D"> <property name="name" type="string"/> </subclass> </hibernate-mapping> ```