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

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

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

    Hibernate實體層次設計(一)

    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-06-30 16:43 baim 閱讀(549) 評論(0)  編輯  收藏 所屬分類: 開源軟件框架

    <2006年6月>
    28293031123
    45678910
    11121314151617
    18192021222324
    2526272829301
    2345678

    導航

    常用鏈接

    隨筆分類(27)

    隨筆檔案(28)

    搜索

    最新評論

    主站蜘蛛池模板: 亚洲精品美女久久久久9999| 亚洲精品国产字幕久久不卡| 亚洲中文字幕无码中文| 亚洲国产精品免费观看| 亚洲成A∨人片在线观看无码| 亚洲综合av永久无码精品一区二区 | 99re6在线视频精品免费下载| 中文字幕天天躁日日躁狠狠躁免费| 亚洲欧洲免费无码| 亚洲av永久综合在线观看尤物| 无码的免费不卡毛片视频| 全部免费国产潢色一级| 污污视频网站免费观看| 亚洲中文字幕久久精品无码喷水| 亚洲大片免费观看| 成年在线观看网站免费| 亚洲第一街区偷拍街拍| 免费中文字幕一级毛片| 9i9精品国产免费久久| 久久久亚洲欧洲日产国码农村| 亚洲精品天堂无码中文字幕| 国产区卡一卡二卡三乱码免费| 亚洲国产综合91精品麻豆| 成人午夜免费福利视频| 亚洲av最新在线观看网址| 久久亚洲国产精品五月天婷| 精品一卡2卡三卡4卡免费视频| 日韩成全视频观看免费观看高清| 久久久久久亚洲精品中文字幕| 特级毛片全部免费播放a一级| 91高清免费国产自产| 亚洲色大成网站www永久男同| 国产精品白浆在线观看免费| 亚洲一级毛片中文字幕| 四虎影视永久免费观看| 国内精品一级毛片免费看| 亚洲电影免费观看| 亚洲国产中文v高清在线观看| 亚洲av无码片vr一区二区三区| 日韩视频在线精品视频免费观看| 亚洲av午夜福利精品一区|