3.6.4 选择策略

来源:互联网 发布:excel数据分析培训 编辑:程序博客网 时间:2024/04/29 07:33

你可以在抽象类和接口上应用所有的映射策略。接口没有状态,但是包含方法声明,因此可以被当成抽象类来对待。你可以使用<class>、<subclass>或者<joined-subclass>来映射接口。同时你也可以使用<property>来映射声明的或者继承的属性。Hibernate并不会实例化抽象类,即使你查询或者加载这些抽象类。

下面是一些规则:

如果你不进行多态连接和查询的话,那么使用每张表对应一个具体类的策略。反之,如果你需要进行多态链接和查询并且资历哦的属性又不太多的情况下,那么使用每张表对应一个类层次的策略。

如果你需要进行多态链接和查询,并且子类的属性很多的话,那么使用每张表一个子类的方法。

默认情况下,选择每张表一个类层次的策略。对于稍微复杂的情况,你需要考虑使用每张表对应子类的策略。但是在这一点上,你需要仔细考虑重构对象模型的继承体系是不是一个更好的选择。复杂的继承关系做好能够和持久化脱离关系。Hibernate扮演了对象模型和关系模型之间的缓冲的角色,但这也并不意味着设计对象模型的时候你可以完全不用考虑持久化的问题。

注意你可以在另外的文件中使用<subclass>和<joined-subclass>元素。你要做的就是声明的就是类的继承过来的,并且父类的映射应该在子类的映射被加载之前加载。这种方式可以帮助你在类的继承体系修改的时候不用修改已经配置好的映射文件。

现在你已经了解了映射一个独立实体的复杂性。在下一节中,我们将讨论实体关系映射的问题,这种映射也是经常引起对象/关系不匹配的重要原因之一。