向左走,向右走。。。
          永遠(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è)映射文件來(lái)實(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 非飛 閱讀(4608) 評(píng)論(1)  編輯  收藏 所屬分類: JAVA 相關(guān)技術(shù)

          FeedBack:
          # re: Hibernate中的繼承映射
          2008-04-26 11:15 | 無(wú)可奈何花落去
          錯(cuò)別字也太多了點(diǎn)吧  回復(fù)  更多評(píng)論
            
          主站蜘蛛池模板: 苍山县| 中山市| 福州市| 灵台县| 郴州市| 伊通| 蛟河市| 靖安县| 大方县| 灵寿县| 台湾省| 辽阳县| 麻阳| 山东| 岳普湖县| 博客| 千阳县| 随州市| 宝应县| 郓城县| 东至县| 两当县| 石阡县| 会宁县| 江油市| 长乐市| 苗栗县| 江源县| 美姑县| 金门县| 昌都县| 溧水县| 双牌县| 策勒县| 公安县| 安陆市| 浦县| 酒泉市| 大厂| 皋兰县| 万州区|