国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

精通Hibernate之映射繼承關系二(圖)

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

  把每個具體類映射到一張表是最簡單的映射方式。如圖14-2所示,在關系數據模型中只需定義COMPANIES、HOURLY_EMPLOYEES和SALARIED_EMPLOYEES表。為了敘述的方便,下文把HOURLY_EMPLOYEES表簡稱為HE表,把SALARIED_EMPLOYEES表簡稱為SE表。
  
  HourlyEmployee類和HE表對應,HourlyEmployee類本身的rate屬性,以及從Employee類中繼續的id屬性和name屬性,在HE表中都有對應的字段。此外,HourlyEmployee類繼續了Employee類與Company類的關聯關系,與此對應,在HE表中定義了參照COMPANIES表的COMPANY_ID外鍵。
  
  SalariedEmployee類和SE表對應,SalariedEmployee類本身的salary屬性,以及從Employee類中繼續的id屬性和name屬性,在SE表中都有對應的字段。此外,SalariedEmployee類繼續了Employee類與Company類的關聯關系,與此對應,在SE表中定義了參照COMPANIES表的COMPANY_ID外鍵。
  
  Company類、HourlyEmployee類和SalariedEmployee類都有相應的映射文件,而Employee類沒有相應的映射文件。圖14-3顯示了持久化類、映射文件和數據庫表之間的對應關系。
  
 精通Hibernate之映射繼續關系二(圖)(圖一)

  
圖14-2 每個具體類對應一個表

  
精通Hibernate之映射繼續關系二(圖)(圖二)

  
圖14-3 持久化類、映射文件和數據庫表之間的對應關系

  
  假如Employee類不是抽象類,即Employee類本身也能被實例化,那么還需要為Employee類創建對應的EMPLOYEES表,此時HE表和SE表的結構仍然和圖14-2中所示的一樣。這意味著在EMPLOYEES表、HE表和SE表中都定義了相同的NAME字段以及參照COMPANIES表的外鍵COMPANY_ID。另外,還需為Employee類創建單獨的Employee.hbm.xml文件。
  
  14.1.1 創建映射文件
  
  從Company類到Employee類是多態關聯,但是由于關系數據模型沒有描述Employee類和它的兩個子類的繼續關系,因此無法映射Company類的employees集合。例程14-1是Company.hbm.xml文件的代碼,該文件僅僅映射了Company類的id和name屬性。
  
  例程14-1 Company.hbm.xml
  
  <hibernate-mapping >
  <class name="mypack.Company" table="COMPANIES" >
  <id name="id" type="long" column="ID">
  <generator class="increment"/>
  </id>
  
  <property name="name" type="string" column="NAME" />
  
  </class>
  </hibernate-mapping>
  
  HourlyEmployee.hbm.xml文件用于把HourlyEmployee類映射到HE表,在這個映射文件中,除了需要映射HourlyEmployee類本身的rate屬性,還需要映射從Employee類中繼續的name屬性,此外還要映射從Employee類中繼續的與Company類的關聯關系。例程14-2是HourlyEmployee.hbm.xml文件的代碼。
  
  例程14-2 HourlyEmployee.hbm.xml
  
  <hibernate-mapping >
  <class name="mypack.HourlyEmployee" table="HOURLY_EMPLOYEES">
  <id name="id" type="long" column="ID">
  <generator class="increment"/>
  </id>
  
  <property name="name" type="string" column="NAME" />
  <property name="rate" column="RATE" type="double" />
  
  <many-to-one
  name="company"
  column="COMPANY_ID"
  class="mypack.Company"
  />
  </class>
  </hibernate-mapping>
  SalariedEmployee.hbm.xml文件用于把SalariedEmployee類映射到SE表,在這個映射文件中,除了需要映射SalariedEmployee類本身的salary屬性,還需要映射從Employee類中繼續的name屬性,此外還要映射從Employee類中繼續的與Company類的關聯關系。例程14-3是SalariedEmployee.hbm.xml文件的代碼。
  
  例程14-3 SalariedEmployee.hbm.xml

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 五常市| 建始县| 廊坊市| 开封市| 澄迈县| 乳山市| 临沭县| 高要市| 盈江县| 阳泉市| 瑞昌市| 临高县| 常德市| 邛崃市| 漳州市| 诸暨市| 吴江市| 民乐县| 清镇市| 佛山市| 东光县| 卓尼县| 大港区| 安塞县| 定南县| 文登市| 孝感市| 浪卡子县| 固镇县| 内乡县| 九龙坡区| 大理市| 万全县| 泽州县| 年辖:市辖区| 夏津县| 盐源县| 从化市| 高要市| 乐亭县| 泌阳县|