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

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

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

    Hibernate中支持3種類型的繼承形式:

    1.Table per concrete class
    表與子類之間的獨立一對一關系。

    2.Table per subclass
    每個子類對應一張子表,并與主類共享主表。

    3.Table per class hierarchy
    表與類的一對多關系

    3種方法的比較。

    比較方面

    Table per concrete class

    Table per subclass

    Table per class hierarchy

    關系數據模型的復雜度 缺點:表中含有重復字段 缺點:表的數目最多,并且表之間還有外鍵
    參照關系
    優點:只需要一個表
    查詢性能 缺點:查詢父類對象,也必須查詢所有具體的
    子類對應的表
    缺點:需要進行表的內連接或者左外連接 優點:無需表連接,查詢性能好
    數據庫Schema的可維護性 缺點:父類發生修改,必須修改所有子類的表 優點:某個類的屬性發生變化,只需修改和這個類對應的表 優點:只需要修改一張表
    是否支持多態查詢和關聯 缺點:不支持(實際上,是可以做到的,做法是指定完整的父類路徑,參見具體例子實現) 優點:支持 優點:支持
    是否符合關系數據模型的常規設計 優點:符合 優點:符合 缺點:
    1)在表中,引入額外的區分子類的類型的字段
    2)如果子類中的某個屬性不允許為null,在表中
    無法為對應的字段創建not null約束
    配置文件說明
    無需變化
    使用joined-subclass節點來說明
    使用discriminator節點來說明


    下面,結合一個例子,分別討論。

    對一個電子商務系統而言,不同的的貨物既有共性,也有各自不同的屬性。貨物都有廠商,名稱等屬性,而書籍有頁數,DVD有分區屬性。在面向對象的程序設計中,我們通常將共性抽象為一個基類,而以不同的子類體現具體的特性。

    共性歸為父類TItem,屬性如下:
    id:Integer
    factory:String
    name:String

    代表書籍的子類TBook,屬性如下:
    pageCount:int

    代表DVD的字類TDVD,屬性如下:
    regionCode:String

    這三個POJO類對應的Java代碼如下:

    父類TItem.java
    package?cn.blogjava.start;

    import?java.io.Serializable;

    public?class?TItem?implements?Serializable?{
    ????
    private?Integer?id;
    ????
    private?String?manufacturer;
    ????
    private?String?name;
    ????
    ????
    public?Integer?getId()?{
    ????????
    return?id;
    ????}
    ????
    public?void?setId(Integer?id)?{
    ????????
    this.id?=?id;
    ????}
    ????
    public?String?getManufacturer()?{
    ????????
    return?manufacturer;
    ????}
    ????
    public?void?setManufacturer(String?manufacturer)?{
    ????????
    this.manufacturer?=?manufacturer;
    ????}
    ????
    public?String?getName()?{
    ????????
    return?name;
    ????}
    ????
    public?void?setName(String?name)?{
    ????????
    this.name?=?name;
    ????}
    ????
    }

    子類TBook
    package?cn.blogjava.start;

    import?java.io.Serializable;

    public?class?TBook?extends?TItem?implements?Serializable?{
    ????
    private?int?pageCount;

    ????
    public?int?getPageCount()?{
    ????????
    return?pageCount;
    ????}

    ????
    public?void?setPageCount(int?pageCount)?{
    ????????
    this.pageCount?=?pageCount;
    ????}????
    }

    子類TDVD
    package?cn.blogjava.start;

    import?java.io.Serializable;

    public?class?TDVD?extends?TItem?implements?Serializable{
    ????
    private?String?regionCode;

    ????
    public?String?getRegionCode()?{
    ????????
    return?regionCode;
    ????}

    ????
    public?void?setRegionCode(String?regionCode)?{
    ????????
    this.regionCode?=?regionCode;
    ????}
    ????
    ????
    }

    下面使用3種不同方式,一一實現。
    posted on 2006-07-05 14:58 knowhow 閱讀(218) 評論(0)  編輯  收藏 所屬分類: ORM:Hibernate及其他
    主站蜘蛛池模板: 久久久精品免费国产四虎| mm1313亚洲国产精品无码试看| 黄桃AV无码免费一区二区三区| 国产免费69成人精品视频| 亚洲熟妇无码AV| 四虎影院免费在线播放| 亚洲欧洲日产国码久在线| 在线观看免费毛片| 日韩一级片免费观看| 亚洲午夜成人精品电影在线观看| jizz免费在线观看| 亚洲精品国产品国语在线| 久久A级毛片免费观看| 亚洲剧情在线观看| 免费黄色毛片视频| 精品在线免费视频| 亚洲日韩欧洲无码av夜夜摸| 久久精品私人影院免费看| 亚洲综合视频在线观看| 免费人成在线视频| 一级一级一片免费高清| 亚洲伊人色欲综合网| 99久久99热精品免费观看国产| 亚洲午夜电影在线观看高清| 免费爱爱的视频太爽了| 精品一区二区三区高清免费观看 | 亚洲一级黄色视频| 日韩插啊免费视频在线观看| 亚洲国产综合精品中文第一| 国产国产成年年人免费看片| 在线观看片免费人成视频播放| 亚洲综合综合在线| 国产精品国产自线拍免费软件| 中文字幕免费观看全部电影| 亚洲午夜电影在线观看高清 | 免费大片在线观看网站| 久久久久国产精品免费免费不卡| 亚洲综合精品第一页| 狠狠亚洲婷婷综合色香五月排名| 亚欧色视频在线观看免费| 一区二区免费电影|