程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 精通Hibernate之映射繼承關系二

精通Hibernate之映射繼承關系二

編輯:關於JAVA

把每個具體類映射到一張表是最簡單的映射方式。如圖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顯示了持久化類、映射文件和數據庫表之間的對應關系。

<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文件的代碼。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved