eric-1001c

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            3 隨筆 :: 45 文章 :: 12 評論 :: 0 Trackbacks
              1. 建立域模型和關系數據模型有著不同的出發點:域模型是由程序代碼組成的,通過細化持久化類的粒度來提高代碼可重用性,簡化編程;而關系數據模型是由關系數據組成的,在存在數據冗余的情況下,可以把粗粒度的表拆分成具有外鍵參照關系的幾個細粒度表,此外在沒有數據冗余的情況下應該盡可能減少表的數目,簡化表之間的參照關系。
              域模型中的聚集aggregation對象關系在關系數據模型中可以通過映射為組成關系來提高代碼和數據庫訪問質量。比如說一個customer具有homeAddress和comAddress屬性,從域模型出發,應該把homeAddress和comAddress抽取出來成為一個過程對象。而在關系數據模型中可以通過hibernate提供的組成關系進行映射。映射文件如下:
          1<component name="homeAddress" class="com.homeAddress">
          2  <parent name="customer"/>
          3  <property name="street" type="String" column="HOME_STREET"/>
          4  <property name="city" type="String" column="HOME_CITY"/>
          5   
          6</component>
          這樣進行映射后,并不需要為homeAddress和comAddress單獨設置數據庫表,應該把homeAddress和comAddress的屬性都和customer表放在一起
          而有一點要格外注意的是,域模型的組成對象homeAddress和comAddress對象除了具有一般的屬性成員變量外,需要為hibernate提供一個parent屬性,如下所示
           1packge com;
           2
           3import java.io.Serializabel;
           4
           5public class HomeAddress implements Serializable{
           6   private String street;
           7   private String city;
           8   
           9   private com.Customer customer;
          10   
          11   public void setCustomer(Customer customer){}
          12      public Customer getCustomer(){}

          hibernate提供的這種組成關系映射允許嵌套使用
          1<component>
          2  <compoent>
          3   
          4  </componet>
          5   
          6</component>

              2. 區分值value類型和實體Entity類型
                  Hibernate把持久化類的屬性分為value和Entity類型。前者沒有OID,不能被單獨持久化,不能單獨通過session加載,它的生命周期依賴于所屬的持久化類的對象生命周期,組件類型就是一種類型;而后者有OID,可以被單獨持久化。在通過Configuration類的addClass()方法加載映射文件時,只需要加載與value類型對應的實體類型,而不需要單獨加載組件類。當通過hibernate進行數據庫操作的時候,hibernate會自動把組件類的屬性轉換為實體類的屬性,從而和table的列對應起來
          posted on 2008-01-23 20:47 Eric-1001c 閱讀(232) 評論(0)  編輯  收藏 所屬分類: Hibernate
          主站蜘蛛池模板: 银川市| 彭州市| 丁青县| 罗平县| 长宁区| 河曲县| 锦屏县| 遂溪县| 土默特左旗| 什邡市| 上饶县| 那坡县| 独山县| 新竹市| 广平县| 杭州市| 韶关市| 平乐县| 通城县| 枝江市| 广州市| 衡南县| 衡东县| 乌恰县| 天等县| 广昌县| 顺平县| 基隆市| 文登市| 和顺县| 甘孜县| 崇阳县| 台南县| 云浮市| 聂拉木县| 深州市| 东海县| 衡阳市| 祁连县| 永济市| 三门县|