1. 程式人生 > >Hibernate學習--對映檔案xxx.hbm.xml詳解

Hibernate學習--對映檔案xxx.hbm.xml詳解

前言

說一說Hibernate對映檔案的作用並解析。
先說一下Hibernate對映檔案與Hibernate配置檔案的關係:
Hibernate工作原理圖

xxx.hbm.xml檔案解析

對映檔案的作用

對映檔案(xxx.hbm.xml)用來把PO(也就是要持久化到資料庫的類?)與資料庫中的資料表、PO之間的關係與資料表之間的關係,以及PO的屬性與表字段一一對映起來,它是Hibernate的核心檔案

PO

PO:Persistent Objects,即持久化物件,它可以是普通的JavaBean,惟一特殊的是它們與(僅一個)Session相關聯。JavaBean在Hibernate中存在三種狀態:臨時狀態(transient)、持久化狀態(persistent)和脫管狀態(detached)

。當一個JavaBean物件在記憶體中孤立存在不與資料庫中的資料有任何關聯關係時,那麼這個JavaBean物件就稱為臨時物件(TransientObject);當它與一個Session相關聯時,就變成持久化物件(Persistent Object);在這個Session被關閉的同時,這個物件也會脫離持久化狀態,變成脫管物件(Detached Object),可以被應用程式的任何層自由使用,例如,可用做與表示層打交道的資料傳輸物件(Data transfer Object)。

參考資料

具體解析

大體內容

對映檔案大體包含了一下內容:
要對映(要持久化的)類的路徑、要持久化到的表和資料庫、資料表的欄位資訊(欄位名、欄位型別、欄位長度)等,將它們即持久化類與資料庫表建立一一對映,這說明對映文件是按照持久化類的定義來建立的,而不是表的定義。

解析

粘一段程式碼

<?xml version="1.0" encoding="utf-8"?>  
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Mapping file autogenerated by MyEclipse Persistence Tools -->
<hibernate-mapping
>
<!--class name:持久化類的路徑 table:對應資料庫表名 schema:資料庫schema的名稱 --> <class name="cn.edu.sdut.softlab.Person" table="person" schema="hibernate"> <!--column:資料庫表的主鍵這段的名字 name:持久化類的標識屬性的名字 type:標識Hibernate型別的名字 --> <id name="id" type="java.lang.String"> <column name="ID" length="32" /> <generator class="assigned" /> </id> <property name="name" type="java.lang.String"> <column name="NAME" length="20" not-null="true" /> </property> <property name="password" type="java.lang.String"> <column name="PASSWORD" length="20" not-null="true" /> </property> <property name="sex" type="java.lang.String"> <column name="SEX" length="20" /> </property> <property name="email" type="java.lang.String"> <column name="EMAIL" length="30" /> </property> </class> </hibernate-mapping>

參考資料

總結

對映檔案與配置檔案的關係。