<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 閱讀(269) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 嫩草在线视频www免费观看| 青青视频免费在线| 久久国产乱子免费精品| 中文亚洲成a人片在线观看| 永久免费精品影视网站| 免费在线观看理论片| 青青久久精品国产免费看| 四虎影在线永久免费观看| 青娱乐在线视频免费观看| heyzo亚洲精品日韩| 人体大胆做受免费视频| 久久久久亚洲AV成人网人人软件| 一区二区三区免费视频网站 | 成年在线观看网站免费| 亚洲欧洲另类春色校园网站| 成人性生交大片免费看午夜a| 国产成人亚洲综合a∨| 精品国产香蕉伊思人在线在线亚洲一区二区| 一个人看的免费高清视频日本| 亚洲午夜国产精品无码| 91精品全国免费观看含羞草 | 亚洲美女大bbbbbbbbb| 亚洲高清无在码在线无弹窗 | 国产L精品国产亚洲区久久 | 国产成人AV免费观看| 亚洲网站在线免费观看| 午夜成年女人毛片免费观看| 在线看亚洲十八禁网站| 亚洲精品V欧洲精品V日韩精品| 99爱在线精品视频免费观看9| 亚洲日本VA中文字幕久久道具| 亚洲日本一区二区一本一道| 久久国产精品免费专区| 亚洲日韩国产一区二区三区在线| 亚洲高清免费视频| 4399影视免费观看高清直播| 久久亚洲欧美国产精品| 亚洲Aⅴ无码专区在线观看q| 成年男女男精品免费视频网站 | 亚洲电影在线播放| 亚洲?V无码乱码国产精品|