物件關係對映檔案(*.hbm.xml)詳解
阿新 • • 發佈:2018-12-14
物件關係對映檔案,即POJO 類和資料庫的對映檔案*.hbm.xml(對映檔案的副檔名為 .hbm.xml)。
POJO 類和關係資料庫之間的對映可以用一個XML文件來定義。
通過 POJO 類的資料庫對映檔案,Hibernate可以理解持久化類和資料表之間的對應關係,也可以理解持久化類屬性與資料庫表列之間的對應關係。
在執行時 Hibernate 將根據這個對映檔案來生成各種 SQL 語句。
常見結構如下:
hibernate-mapping -類層次:class --主鍵:id --基本型別:property --實體引用類: many-to-one | one-to-one --集合:set | list | map | array ---one-to-many ---many-to-many --子類:subclass | joined-subclass --其它:component | any 等 -查詢語句:query(用來放置查詢語句,便於對資料庫查詢的統一管理和優化)
每個Hibernate-mapping中可以同時定義多個類. 但更推薦為每個類都建立一個單獨的對映檔案。
① hibernate-mapping節點
hibernate-mapping節點
屬性如下:
hibernate-mapping 是 hibernate 對映檔案的根元素。
- schema: 指定所對映的資料庫schema的名稱。若指定該屬性, 則表明會自動新增該 schema 字首。
- catalog:指定所對映的資料庫catalog的名稱。
- default-cascade(預設為 none): 設定hibernate預設的級聯風格. 若配置 Java 屬性, 集合對映時沒有指定 cascade 屬性, 則 Hibernate 將採用此處指定的級聯風格。
- default-access (預設為 property): 指定 Hibernate 的預設的屬性訪問策略。預設值為 property, 即使用 getter, setter 方法來訪問屬性。若指定 access, 則 Hibernate 會忽略 getter/setter 方法, 而通過反射訪問成員變數。
- default-lazy(預設為 true): 設定 Hibernat morning的延遲載入策略. 該屬性的預設值為 true, 即啟用延遲載入策略. 若配置 Java 屬性對映, 集合對映時沒有指定 lazy 屬性, 則 Hibernate 將採用此處指定的延遲載入策略 。
- auto-import (預設為 true): 指定是否可以在查詢語言中使用非全限定的類名(僅限於本對映檔案中的類)。
- package (可選): 指定一個包字首,如果在對映文件中沒有指定全限定的類名, 就使用這個作為包名。
② class節點
class節點屬性如下:
class 元素用於指定類和表的對映
- name:指定該持久化類對映的持久化類的類名。
- table:指定該持久化類對映的表名, Hibernate 預設以持久化類的類名作為表名。
- dynamic-insert: 若設定為 true, 表示當儲存一個物件時, 會動態生成 insert 語句, insert 語句中僅包含所有取值不為 null 的欄位. 預設值為 false。
- dynamic-update: 若設定為 true, 表示當更新一個物件時, 會動態生成 update 語句, update 語句中僅包含所有取值需要更新的欄位。預設值為 false。
- select-before-update:設定 Hibernate 在更新某個持久化物件之前是否需要先執行一次查詢,預設值為 false。
- batch-size:指定根據 OID 來抓取例項時每批抓取的例項數。
- lazy: 指定是否使用延遲載入,預設為true。
- mutable: 若設定為 true, 等價於所有的
<property>
元素的 update 屬性為 false, 表示整個例項不能被更新。 預設為 true。 - discriminator-value: 指定區分不同子類的值。當使用
<subclass/>
元素來定義持久化類的繼承關係時需要使用該屬性。