把每個具體類映射到一張表是最簡單的映射方式
如圖
所示
在關系數據模型中只需定義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類沒有相應的映射文件
圖
顯示了持久化類
映射文件和數據庫表之間的對應關系
圖 每個具體類對應一個表 圖 持久化類映射文件和數據庫表之間的對應關系 如果Employee類不是抽象類
即Employee類本身也能被實例化
那麼還需要為Employee類創建對應的EMPLOYEES表
此時HE表和SE表的結構仍然和圖
中所示的一樣
這意味著在EMPLOYEES表
HE表和SE表中都定義了相同的NAME字段以及參照COMPANIES表的外鍵COMPANY_ID
另外
還需為Employee類創建單獨的Employee
hbm
xml文件
創建映射文件 從Company類到Employee類是多態關聯
但是由於關系數據模型沒有描述Employee類和它的兩個子類的繼承關系
因此無法映射Company類的employees集合
例程
是Company
hbm
xml文件的代碼
該文件僅僅映射了Company類的id和name屬性
例程
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類的關聯關系
例程
是HourlyEmployee
hbm
xml文件的代碼
例程
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類的關聯關系
例程
是SalariedEmployee
hbm
xml文件的代碼
例程
SalariedEmployee
hbm
xml
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28162.html