向左走,向右走。。。
          永遠(yuǎn)不回頭
          posts - 16,comments - 17,trackbacks - 0



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

          1. 每簇類使用一個(gè)表;
          2. 每個(gè)子類一個(gè)表;
          3. 每個(gè)具體內(nèi)一個(gè)表(有限制)。
          假設(shè)我們有四個(gè)類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
          }

          • 每簇類使用一個(gè)表
                 使用每簇類使用一個(gè)表的策略時(shí),有一個(gè)限制就時(shí)子類不能有NOT NULL,映射文件為:
                 文件名:Animal.hbm.xml
                 <class name="Animal" table="TB_ANIMAL">
                    
          <id name="identifier" type="string" column="IDENTIFIER">
                       
          <generator class="uuid.hex"/>
                    
          </id>
                    
          <discriminator column="ANIMAL_TYPE" type="string"/>
                    
          <property name="name" column="NAME" type="string"/>
                    
                    
          <subclass name="Dog" discriminator-value="DOG">
                       
                    
          </subclass>
                    
          <subclass name="Cat" discriminator-value="CAT">
                       
                    
          </subclass>
                 
          </class>

          • 每個(gè)子類一個(gè)表
                 使用每個(gè)子類一個(gè)表的策略時(shí),可以使用一個(gè)映射文件實(shí)現(xiàn),也可以分成多個(gè)映射文件來實(shí)現(xiàn)。每個(gè)子類一個(gè)映射文件的情況:
                 文件名:Animal.hbm.xml
                 <class name="Animal" table="ANIMAL">
                    
          <id name="identifier" column="IDENTIFIER" type="string">
                       
          <generator class="uuid.hex"/>
                    
          </id>
                    
          <property >
                 
          </class>
                 文件名:Dog.hbm.xml
                 
          <joined-subclass name="Dog" table="DOG" extends="Animal">
                    
          <key column="DOG_ID"/>
                    
                 
          </joined-subclass>
                 文件名:Cat.hbm.xml
                 
          <joined-subclass name="Cat" table="CAT" extends="Cat">
                    
          <key column="CAT_ID"/>
                    
                 
          </joined-subclass>

                 每個(gè)子類一個(gè)表的策略實(shí)際上一種one-to-one的映射。
          • 每個(gè)具體內(nèi)一個(gè)表(有限制)
                 使用每個(gè)具體內(nèi)一個(gè)表(有限制)策略時(shí),每一個(gè)子類的映射文件將要包含所有父類中的屬性,映射文件:
                 文件名:Dog.hbm.xml
                 <class name="Dog" table="DOG">
                    
          <id name="identifier" column="IDENTIFIER" type="string">
                       
          <generator class="uuid.hex"/>
                    
          </id>
                    
          <property name="name" column="NAME" type="string"/>
                    
                 
          </class>
                 文件名:Cat.hbm.xml
                 
          <class name="Cat" table="CAT">
                    
          <id name="identifier" column="IDENTIFIER" type="string">
                       
          <generator class="uuid.hex"/>
                    
          </id>
                    
          <property name="name" column="NAME" type="string"/>
                    
                 
          </class>




          posted on 2005-03-02 22:31 非飛 閱讀(4605) 評(píng)論(1)  編輯  收藏 所屬分類: JAVA 相關(guān)技術(shù)

          FeedBack:
          # re: Hibernate中的繼承映射
          2008-04-26 11:15 | 無可奈何花落去
          錯(cuò)別字也太多了點(diǎn)吧  回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 淄博市| 芒康县| 岐山县| 岗巴县| 两当县| 鹤山市| 乌拉特中旗| 苏尼特左旗| 丽江市| 睢宁县| 施甸县| 九台市| 惠东县| 天等县| 定结县| 尼勒克县| 富源县| 丰都县| 祁阳县| 永城市| 青阳县| 珲春市| 平果县| 临颍县| 新河县| 绥江县| 齐齐哈尔市| 梁山县| 浑源县| 娄底市| 延边| 防城港市| 旅游| 宜川县| 台前县| 永和县| 怀远县| 泸定县| 大同市| 吉木萨尔县| 炎陵县|