<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    java技術

    hibernate spring struts

    BlogJava 聯系 聚合 管理
      18 Posts :: 0 Stories :: 1 Comments :: 0 Trackbacks
    可能經常遇到這樣的情況:
           
    在數據庫表中會有這樣的一個字段用來區別記錄的屬性,如:在客戶表中有一個字段表示客戶級別,當這個記錄為A時是一級客戶,為B時是二級客戶。在用hiberanteOR表示時類可能是這樣的:
           public class Customer{
              private String flag;   //
    表示客戶的級別
              ...
           }    
           
    然后,在程序中手動控制flag的值,但是這樣當每個級的客戶有不同的屬性時Customer類將包含所有級別的屬性,這樣不是很好。
           hibernate
    提供一個Discriminator映射的方法,就是把一個表映射成不同的類,有不同的屬性。

           public class Customer{
              //
    包含所有級別的公共屬性
              ...
            }
           
           public class CustomerA extends Customer{
           //
    只包括一級客戶的特有屬性
            }

           public class CustomerB extends Customer{
           //
    只包含二級客戶特有的屬性
            }
    這樣更符合面向對象的原則,然后在hbm.xml中這樣寫:
    <id name="id" type="int">
        ...
    </id>
    <discriminator column="flag" type="string" />
    <!-- 
    公共屬性的映射 -->
    <subclass name="CustomerA" discriminator-value="A">
    <!-- 
    一級客戶特有屬性的映射
     -->
    </subclass>
    <subclass name="CustomerB" discriminator-value="B">
    <!-- 
    二級客戶特有屬性的映射
     -->
    </subclass>

    這樣就可以單獨的用CustomerA,CustomerB這樣的實例了,做數據庫修改時就不用關心flag字段的值了,會自動的加AB


    如果是使用hibernate Annotation而不是xml來描述映謝關系,代碼如下:
    @Entity
    @Table(name = "customer")
    @Inheritance(strategy = InheritanceType.SINGLE_TABLE)
    @DiscriminatorColumn(name = "flag", discriminatorType = DiscriminatorType.STRING)
    public class Customer{
    }

    @Entity
    @DiscriminatorValue(value = "A")
    public class CustomerA extends Customer{
    }

    @Entity
    @DiscriminatorValue(value = "B")
    public class CustomerB extends Customer{
    }

    這樣就可以了。
    posted on 2009-11-27 15:27 just 閱讀(636) 評論(0)  編輯  收藏 所屬分類: JPA

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲一卡2卡3卡4卡乱码 在线 | 国产亚洲精品线观看动态图| 亚洲AV无码一区二区三区久久精品 | 欧洲精品99毛片免费高清观看| 亚洲一区二区三区在线观看精品中文 | 久久国产精品成人片免费| 亚洲日本一区二区三区在线| 国产免费久久精品丫丫| 亚洲第一永久AV网站久久精品男人的天堂AV| 亚洲最大的成人网站| 国产成人无码区免费A∨视频网站 国产成人涩涩涩视频在线观看免费 | 国产青草亚洲香蕉精品久久| 国产嫩草影院精品免费网址| 国产精品亚洲综合天堂夜夜| 亚洲国产成人乱码精品女人久久久不卡| 免费夜色污私人影院网站| 在线亚洲精品福利网址导航| 精品国产麻豆免费人成网站| 久久青青草原亚洲av无码app | 国产又黄又爽又猛免费app| 亚洲欧美日韩综合久久久久 | 久久精品无码专区免费东京热| 亚洲黄色在线网站| 精品久久久久国产免费| 国产亚洲人成在线影院| 亚洲精品你懂的在线观看| 在线成人爽a毛片免费软件| 亚洲中文字幕久久精品无码A| 国产一级做a爱免费视频| 亚洲一级片免费看| 亚洲成a人片在线观看中文app| 永久免费无码网站在线观看 | 亚洲av色香蕉一区二区三区 | 亚洲精品国精品久久99热一| 97精品免费视频| 亚洲爆乳无码专区www| 亚洲伊人久久精品影院| 成年女性特黄午夜视频免费看| 色屁屁www影院免费观看视频| 亚洲AV日韩精品久久久久| 成人免费无码精品国产电影|