使用子类时拆分Hibernate配置文件(hbm.xml文件)

时间:2011-09-15 08:22:55

标签: java hibernate hibernate-mapping

我们有一个hibernate映射文件(hbm.xml文件),它将我们域的一部分映射到数据库。此部分包含继承层次结构。即我们有一个父类'Parent'和几个子类'Child1','Child2',......

由于hibernate映射文件的结构,子类位于父<class> XML标记内<joined-subclass>

由于此映射文件变得越来越大,我们现在想要拆分它。有没有办法为每个子类都有一个映射文件?

2 个答案:

答案 0 :(得分:3)

新XML中的标记:

<joined-subclass />

或者

<hibernate-mapping>
 <subclass name="DomesticCat" extends="Cat" discriminator-value="D">
      <property name="name" type="string"/>
 </subclass>
 </hibernate-mapping>

从hibernate站点中提取:

It is possible to define subclass, union-subclass, and joined-subclass mappings in separate mapping documents directly.

参考:http://docs.jboss.org/hibernate/core/3.3/reference/en/html/inheritance.html

答案 1 :(得分:0)

您可以在XML中使用ENTITY定义:

在主hbm.xml文件中:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" [
    <!ENTITY subclass1 SYSTEM "classpath://my/hbms/subclass1.xml">
    <!ENTITY subclass2 SYSTEM "classpath://my/hbms/subclass2.xml">
    ]>

<hibernate-mapping>
<class name="my.pkg.Parent">
         ...
         &subclass1;
         &subclass2;
</class>

我的/ hbms / subclass1.xml:

<joined-subclass name="subclass1">
    <!-- all the subclass definitions -->
</joined-subclass>

我的/ hbms / subclass2.xml:

<joined-subclass name="subclass2">
    <!-- all the subclass definitions -->
</joined-subclass>