<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-12-23 12:26 just 閱讀(268) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 亚洲蜜芽在线精品一区| 国产成人免费a在线视频app| 在线亚洲人成电影网站色www| 久久无码av亚洲精品色午夜| 四虎www免费人成| 国产亚洲精品美女久久久久| 免费国产综合视频在线看| 国产成人精品日本亚洲语音| 在线a亚洲v天堂网2018| 日本高清免费中文在线看| 亚洲av高清在线观看一区二区| 免费夜色污私人影院网站| 亚洲AV无码一区二区三区在线观看| 日韩亚洲翔田千里在线| xvideos亚洲永久网址| 91在线免费观看| 香蕉蕉亚亚洲aav综合| 亚洲精品视频免费看| 亚洲伦理中文字幕| 国产网站免费观看| 一级黄色免费网站| 亚洲AV人人澡人人爽人人夜夜| 亚欧在线精品免费观看一区| 亚洲中文字幕久久精品无码A| 午夜国产大片免费观看| 香蕉免费在线视频| 亚洲日本视频在线观看| 国产一卡2卡3卡4卡2021免费观看 国产一卡2卡3卡4卡无卡免费视频 | 一级做受视频免费是看美女 | 亚洲第一区精品日韩在线播放| 一级毛片在线免费播放| 亚洲国产日韩一区高清在线 | 亚洲精品国产第一综合99久久| 免费大香伊蕉在人线国产 | 亚洲人成电影网站免费| 亚洲人成色77777在线观看大| 91香蕉国产线在线观看免费| 久久久久久久久无码精品亚洲日韩| 在线亚洲精品福利网址导航| 国产v精品成人免费视频400条| 一级毛片免费在线观看网站|