麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

精通Hibernate之映射繼承關系八

2019-11-18 12:57:14
字體:
來源:轉載
供稿:網友

  由于關系數據模型不答應一個表的外鍵同時參照兩個表的主鍵,因此無法對TABLE_D表的A_ID字段定義外鍵參照約束,而應該通過其他方式,如觸發器,來保證A_ID字段的參照完整性。由于TABLE_D表的A_ID字段既可能參照TABLE_B表的ID主鍵,也可能參照TABLE_C表的ID主鍵,要求TABLE_B表和TALBE_C表的ID主鍵具有相同的SQL類型。
  
  在ClassD.hbm.xml文件中,用元素來映射ClassD的a屬性:
  
  <any name="a"
  meta-type="string"
  id-type="long"
  cascade="save-update">
  <meta-value value="B" class="ClassB" />
  <meta-value value="C" class="ClassC" />
  <column name="A_TYPE" />
  <column name="A_ID" />
  </any>
  
  元素的meta-type屬性指定TABLE_D中A_TYPE字段的類型,id-type屬性指定TABLE_D中A_ID字段的類型,子元素設定A_TYPE字段的可選值。在本例中,假如A_TYPE字段取值為"B",表示為ClassB的對象,A_ID字段參照TABLE_B表中的ID主鍵;假如A_TYPE字段取值為"C",表示為ClassC的對象,A_ID字段參照TABLE_C表中的ID主鍵。子元素指定TABLE_D表中的A_TYPE字段和A_ID字段,必須先指定A_TYPE字段,再指定A_ID字段。
  
  小結
  
  本章介紹了映射繼續關系的三種方式:
  
  繼續關系樹的每個具體類對應一個表:在具體類對應的表中,不僅包含和具體類的屬性對應的字段,還包含和具體類的父類的屬性對應的字段。這種映射方式不支持多態關聯和多態查詢。
  
  繼續關系樹的根類對應一個表:在根類對應的表中,不僅包含和根類的屬性對應的字段,還包含和所有子類的屬性對應的字段。
  
  這種映射方式支持多態關聯和多態查詢,并且能獲得最佳查詢性能,缺點是需要對關系數據模型進行非常規設計,在數據庫表中加入額外的區分各個子類的字段,此外,不能為所有子類的屬性對應的字段定義not null約束。
  
  繼續關系樹的每個類對應一個表:在每個類對應的表中只需包含和這個類本身的屬性對應的字段,子類對應的表參照父類對應的表。
  
  這種映射方式支持多態關聯和多態查詢,而且符合關系數據模型的常規設計規則,缺點是它的查詢性能不如第二種映射方式。在這種映射方式下,必須通過表的內連接或左外連接來實現多態查詢和多態關聯。
  
  在默認情況下,對于簡單的繼續關系樹可以采用根類對應一個表的映射方式。假如必須保證關系數據模型的數據完整性,可以采用每個類對應一個表的映射方式。對于復雜的繼續關系樹,可以將它分解為幾棵子樹,對每棵子樹采用不同的映射方式。
  
  當然,在設計域模型時,應該盡量避免設計過分復雜的繼續關系,這不僅會增加把域模型映射到關系數據模型的難度,而且也會增加在java程序代碼中操縱持久化對象的復雜度。
  
  對于不同的映射方式,必須創建不同的關系數據模型和映射文件,但是域模型是一樣的,域模型中的持久化類的實現也都一樣。
  
  只要具備Java編程基礎知識,就能創建具有繼續關系的持久化類,因此本章沒有具體介紹這些持久化類的創建過程,在此僅提醒一點,子類的完整構造方法不僅負責初始化子類本身的屬性,還應該負責初始化從父類中繼續的屬性,例如以下是HourlyEmployee類的構造方法:
  
  public class HourlyEmployee extends Employee{
  PRivate double rate;
  
  /** 完整構造方法*/
  public HourlyEmployee(String name, double rate,Company company) {
  super(name,company);
  this.rate=rate;
  }
  
  /** 默認構造方法*/
  public HourlyEmployee() {}
  ……
  }
  
  Hibernate只會訪問持久化類的默認構造方法,永遠不會訪問其他形式的構造方法。提供以上形式的完整構造方法,主要是為Java應用的編程提供方便。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久久tv| 国产乱色精品成人免费视频 | 蜜桃成品人免费视频 | 亚洲精品动漫在线观看 | 少妇一级淫片免费放正片 | 亚洲嫩草av | 性欧美极品xxxx欧美一区二区 | 91在线色 | 国产精品热 | 一本在线高清码电影 | 国产精品91在线 | 国产精品av久久久久久久久久 | 在线播放h | 久久久久久久久久亚洲 | h视频免费在线观看 | 欧美日韩亚洲在线观看 | 永久免费在线观看av | 黄色片网站免费 | 精品国产专区 | 中文字幕亚洲欧美 | 中文字幕电影免费播放 | 日本在线视 | 毛片网站网址 | 久久久aa| 成人在线精品视频 | 热99re久久免费视精品频软件 | 人成免费a级毛片 | 国产免费一级淫片a级中文 99国产精品自拍 | 国产在线地址 | 日韩精品免费一区二区三区 | 国产日韩一区二区三区在线观看 | 午夜精品老牛av一区二区三区 | 久久精品性视频 | 久久精品亚洲欧美日韩精品中文字幕 | 欧美成人毛片 | 国产精品91久久久 | 毛片一区二区三区四区 | 99精彩视频在线观看 | 桥本有菜免费av一区二区三区 | 久久国产不卡 | 久久久婷婷 |