三種繼承表

2021-08-19 23:17:52 字數 1910 閱讀 6753

乙個子類一張表

並與主類(父類)共享主表

這種關係中,將父類單獨對映到一張主表,而為子類分別單獨設立一張子表,子表中只包含子類所擴充套件的屬性,同時,子類和父類通過關係型資料庫的外來鍵關聯

<?xml version="1.0" encoding="utf-8"?>

name="hibernate.belle.animal"

table="t_animal" >

name="id">

class="native">

generator>

id>

name="hibernate.belle.bird"

table ="t_bird">

column="bid">

key>

name="height">

property>

joined-subclass>

name="hibernate.belle.pig"

table="t_pig">

column="pid">

key>

name="weight">

property>

joined-subclass>

class>

單錶繼承。所有類共用一張

<?xml version="1.0" encoding="utf-8"?>

name="hibernate.belle.animal"

table="t_animal" >

name="id">

class="native">

generator>

id>

type="string">

discriminator>

name="name">

property>

name="hibernate.belle.bird"

discriminator-value="p">

name="height">

property>

subclass>

name="hibernate.belle.pig"

discriminator-value="b">

name="weight">

property>

subclass>

class>

每個具體類一張表 和join-subclass的區別就是 這裡的子表會加上參照主表的列 而join-subclass只是參照 不會加到自己的表裡面

注意: 這裡的id不能native 因為每個具體類一張表 很有可能pig和bird 的主鍵id相同 所以要用assigned 手動分配id

這裡的父類 animal可以將abstract設為true 表示不生成這個抽象表

<?xml version="1.0" encoding="utf-8"?>

name="hibernate.belle.animal"

table="animal"

abstract="true" >

name="id">

class="assigned">

generator>

id>

name="name">

property>

name="hibernate.belle.bird"

table ="t_bird">

name="height">

property>

union-subclass>

name="hibernate.belle.pig"

table="t_pig">

name="weight">

property>

union-subclass>

class>

C 三種繼承

1 公有 私有 受保護繼承 class b public a class b public a class b protected a 繼承方式 成員型別 public protected private public public protected 無法繼承 protected protecte...

三種繼承方式

派生類繼承了基類的全部資料成員和除了建構函式,析構函式之外的全部資料成員,但是這些成員的訪問屬性在派生的過程中是可以調整的。從基類繼承的成員,其訪問屬性由繼承方式控制。類的公有繼承 當繼承方式為公有繼承時,基類的公有成員和保護成員的訪問屬性在派生類中不變,而基類的私有成員不可直接訪問。類的私有繼承 ...

三種繼承方式

三種繼承方式 公有繼承 私有繼承,保護繼承 不同繼承方式的影響主要體現在 公有繼承 標頭檔案部分 ifndef point h define point h class point void move int offx,int offy int getx const int gety const p...