溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Hibernate繼承映射所包含三種不同的策略的介紹

發(fā)布時間:2021-09-13 10:08:36 來源:億速云 閱讀:147 作者:chen 欄目:編程語言

這篇文章主要講解了“Hibernate繼承映射所包含三種不同的策略的介紹”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Hibernate繼承映射所包含三種不同的策略的介紹”吧!

Hibernate繼承映射包含了三種不同的策略:

每簇類使用一個表;

每個子類一個表;

每個具體內(nèi)一個表(有限制)。

假設(shè)我們有四個類Animal,Dog,Cat,文件名:Animal.java,

其代碼如下:

程序代碼:

class Animal {      private String identifier;      private String name;      private String category;      // setter and getter  }

文件名:Dog.java

class Dog extends Animal {      private String       // setter and getter  }

文件名:Cat.java

class Cat extends Animal {      private String       // setter and getter  }

每簇類使用一個表,使用每簇類使用一個表的策略時,有一個限制就時子類不能有NOT NULL,映射文件為文件名:Animal.hbm.xml

程序代碼:

<class name="Animal" table="TB_ANIMAL">            <ID NAME=< SPAN>"identifier" type="string" column="IDENTIFIER">               <GENERATOR < SPAN>class="uuid.hex"/>                       <DISCRIMINATOR COLUMN=< SPAN>"ANIMAL_TYPE" type="string"/>            <PROPERTY NAME=< SPAN>"name" column="NAME" type="string"/>                      <SUBCLASS NAME=< SPAN>"Dog" discriminator-value="DOG">                                   <SUBCLASS NAME=< SPAN>"Cat" discriminator-value="CAT">                                class>

每個子類一個表,使用每個子類一個表的策略時,可以使用一個映射文件實現(xiàn),也可以分成多個映射文件來實現(xiàn)。每個子類一個映射文件的情況:
文件名:Animal.hbm.xml

程序代碼:

<class name="Animal" table="ANIMAL">            <ID NAME=< SPAN>"identifier" column="IDENTIFIER" type="string">               <GENERATOR < SPAN>class="uuid.hex"/>                               class>

文件名:Dog.hbm.xml

程序代碼:

<JOINED-SUBCLASS NAME=< SPAN>"Dog" table="DOG" extends="Animal">            <KEY COLUMN=< SPAN>"DOG_ID"/>


文件名:Cat.hbm.xml


程序代碼:

<JOINED-SUBCLASS NAME=< SPAN>"Cat" table="CAT" extends="Cat">            <KEY COLUMN=< SPAN>"CAT_ID"/>

每個子類一個表的策略實際上一種one-to-one的映射。

每個具體內(nèi)一個表(有限制),使用每個具體內(nèi)一個表(有限制)策略時,每一個子類的映射文件將要包含所有父類中的屬性,映射文件文件名:Dog.hbm.xml

程序代碼:

<class name="Dog" table="DOG">            <ID NAME=< SPAN>"identifier" column="IDENTIFIER" type="string">               <GENERATOR < SPAN>class="uuid.hex"/>                       <PROPERTY NAME=< SPAN>"name" column="NAME" type="string"/>                     class>

文件名:Cat.hbm.xml

程序代碼:

<class name="Cat" table="CAT">       <ID NAME=< SPAN>"identifier" column="IDENTIFIER" type="string">          <GENERATOR < SPAN>class="uuid.hex"/>             <PROPERTY NAME=< SPAN>"name" column="NAME" type="string"/>             class>

感謝各位的閱讀,以上就是“Hibernate繼承映射所包含三種不同的策略的介紹”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對Hibernate繼承映射所包含三種不同的策略的介紹這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI