eric-1001c

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            3 隨筆 :: 45 文章 :: 12 評論 :: 0 Trackbacks
              1. 建立域模型和關系數(shù)據(jù)模型有著不同的出發(fā)點:域模型是由程序代碼組成的,通過細化持久化類的粒度來提高代碼可重用性,簡化編程;而關系數(shù)據(jù)模型是由關系數(shù)據(jù)組成的,在存在數(shù)據(jù)冗余的情況下,可以把粗粒度的表拆分成具有外鍵參照關系的幾個細粒度表,此外在沒有數(shù)據(jù)冗余的情況下應該盡可能減少表的數(shù)目,簡化表之間的參照關系。
              域模型中的聚集aggregation對象關系在關系數(shù)據(jù)模型中可以通過映射為組成關系來提高代碼和數(shù)據(jù)庫訪問質量。比如說一個customer具有homeAddress和comAddress屬性,從域模型出發(fā),應該把homeAddress和comAddress抽取出來成為一個過程對象。而在關系數(shù)據(jù)模型中可以通過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單獨設置數(shù)據(jù)庫表,應該把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. 區(qū)分值value類型和實體Entity類型
                  Hibernate把持久化類的屬性分為value和Entity類型。前者沒有OID,不能被單獨持久化,不能單獨通過session加載,它的生命周期依賴于所屬的持久化類的對象生命周期,組件類型就是一種類型;而后者有OID,可以被單獨持久化。在通過Configuration類的addClass()方法加載映射文件時,只需要加載與value類型對應的實體類型,而不需要單獨加載組件類。當通過hibernate進行數(shù)據(jù)庫操作的時候,hibernate會自動把組件類的屬性轉換為實體類的屬性,從而和table的列對應起來
          posted on 2008-01-23 20:47 Eric-1001c 閱讀(232) 評論(0)  編輯  收藏 所屬分類: Hibernate
          主站蜘蛛池模板: 新泰市| 江西省| 南澳县| 芒康县| 邓州市| 宝鸡市| 吉林市| 汝城县| 衡阳县| 罗田县| 永顺县| 九龙坡区| 甘洛县| 中卫市| 梓潼县| 苍山县| 高淳县| 镶黄旗| 延津县| 岢岚县| 英德市| 怀远县| 绥德县| 濉溪县| 三原县| 崇明县| 左贡县| 延边| 安溪县| 京山县| 雷山县| 延庆县| 奉贤区| 平潭县| 舞钢市| 乐平市| 海门市| 广平县| 兰西县| 山西省| 额敏县|