hibernate中采用三種不同方式來映射繼承關(guān)系
1、一個類庫一個表
即:一張大表保存父子類所有的屬性。
優(yōu)點 : 簡潔 , 不需要進行表的連接 .
缺點 : 對于子類特有的屬性不能加非空約束 .
<discriminator column="辨別字段名"
/>
<subclass name="子類名"
discriminator-value="辨別字段值">
<property name="子類中定義的屬性名" />
</subclsss>
2、 一個類對一個表
即:父類和子類各自建一張表 ,父子表之間的數(shù)據(jù)采用共享主鍵的方式 .
優(yōu)點 : 可以加not null , 沒有數(shù)據(jù)冗余 .
缺點 : 由于操作的表數(shù)量多,影響效率.
<joined-subclass name="子類名"
table="子類表">
<key
column="子類表中約束父類表主鍵的外鍵"/>
<property
name="子類中定義的屬性名" />
</joined-subclass>
3、一個實體類一個表
即:每一個可實例化的子類建一張表,父類的屬性保存在子表中 .
缺點:不能明顯的體系繼承關(guān)系
<union-subclass name="子類名"
table="子類表">
<property name="子類中定義的屬性名" />
</union-subclass>
|