一 Table per concrete class (表与子类之间的独立一对一关系)
Tbook Tdvd两个类都有共同的属性 制造商manufacturers 名字name 以及id 不同属性 页数pagecount 域Regincode
都继承父类titer 父类属性就是以上类的共同属性 子类属性类型必须与父类属性类型一致.
需要为两个子类配置映射文件 父类不需要
hibernate通过查询父类就能得到 所有子类polymorphism="implicit"(默认的:多态式=隐式)的结果集
<!-- Tbook配置文件信息 Tdvd类似-->
<hibernate-mapping>
<class name="hibernate.Titer.Tbook" table="T_book">
<id name="id" type="int" column="id">
<generator class="increment"></generator>
</id>
<property name="manufacturer" type="string" column="manufacturer">
</property>
<property name="name" type="string" column="name">
</property>
<property name="pagecount" type="int" column="pagecount">
</property>
</class>
</hibernate-mapping>
二 Table per subclass (每个子类对应一张字表 并与父类共享主表)
以上关系如果如果父类改变了属性 所有子类都必须改变属性 怎么想都觉得不可取
所以第二次使用较第一次进行了改变
把相同属性定义在父类里面,子类拥有自己特有的属性, 在父类映射文件里面配置子类信息
通过保存子类数据就能保存关联表数据 通过查询父类表数据就能得到所有子表信息
<!-- titer配置文件信息 期间不小心把joined-subclass节点写到class节点外 报错超父类连接为空 -->
<hibernate-mapping>
<class name="hibernate.Titer2.titer" table="TITER">
<id name="id" type="int">
<column name="ID" />
<generator class="increment" />
<column name="MANUFACTURER" />
<column name="NAME" />
<key column="id"></key>
<property name="pagecount" column="pagecount"/>
</joined-subclass>
<joined-subclass name="hibernate.Titer2.Tdvd" table="TDVD">
</joined-subclass>
</class>
Tbook Tdvd两个类都有共同的属性 制造商manufacturers 名字name 以及id 不同属性 页数pagecount 域Regincode
都继承父类titer 父类属性就是以上类的共同属性 子类属性类型必须与父类属性类型一致.
需要为两个子类配置映射文件 父类不需要
hibernate通过查询父类就能得到 所有子类polymorphism="implicit"(默认的:多态式=隐式)的结果集
<!-- Tbook配置文件信息 Tdvd类似-->
<hibernate-mapping>
<class name="hibernate.Titer.Tbook" table="T_book">
<id name="id" type="int" column="id">
<generator class="increment"></generator>
</id>
<property name="manufacturer" type="string" column="manufacturer">
</property>
<property name="name" type="string" column="name">
</property>
<property name="pagecount" type="int" column="pagecount">
</property>
</class>
</hibernate-mapping>
二 Table per subclass (每个子类对应一张字表 并与父类共享主表)
以上关系如果如果父类改变了属性 所有子类都必须改变属性 怎么想都觉得不可取
所以第二次使用较第一次进行了改变
把相同属性定义在父类里面,子类拥有自己特有的属性, 在父类映射文件里面配置子类信息
通过保存子类数据就能保存关联表数据 通过查询父类表数据就能得到所有子表信息
<!-- titer配置文件信息 期间不小心把joined-subclass节点写到class节点外 报错超父类连接为空 -->
<hibernate-mapping>
<class name="hibernate.Titer2.titer" table="TITER">
<id name="id" type="int">
<column name="ID" />
<generator class="increment" />
</id>
<column name="MANUFACTURER" />
</property>
<column name="NAME" />
</property>
<key column="id"></key>
<property name="pagecount" column="pagecount"/>
</joined-subclass>
<joined-subclass name="hibernate.Titer2.Tdvd" table="TDVD">
<key column="id"></key>
<property name="regincode" column="regincode"/></joined-subclass>
</class>