本文爲原創文章,轉載請註明出處: http://www.pm-road.com/index.php/2014/11/14/193/
Hibernate是一個開放源代碼的對象關係映射框架,對JDBC進行了非常輕量級的對象封裝, 也就是說之前操作數據庫的表現在可以直接操作對應的對象類,而數據庫的表和對象之間就應該有一定的映射關係,而這種映射關係大部分是採用了xml配置文件 的方式來進行一一匹配,接下來就詳細講解一下該配置文件。
一:hibernate配置文件和實體類一一對應
在生成一個配置文件的時候,一個配置文件對應一個實體類,而其中的屬性也會一一對應,比如說:我有一個User.java實體類,那我就應該有一個 User.hbm.xml類,至於該配置文件的存儲位置在哪,就要在hibernate的主配置文件中設置(在此不多講,而User.hbm.xml這個 名稱也不一定命名爲User.hbm.xml,可以命名爲Person.hbm.xml,這個接下來會講)。
一個實體類對應一個配置文件類,同樣,實體類中的屬性也要和配置文件中的屬性一一對應,比如說user.java的代碼有如下屬性:
public class User{ private String userId; private String userName; private int userAge; private String userSex; //get set 方法 …… }
那麼在配置文件User.hbm.xml中就應該把這些屬性一一配置進去,如下:
<?xml version=”1.0″ encoding=”UTF-8″?><!DOCTYPE hibernate-mapping PUBLIC “-//Hibernate/Hibernate Mapping DTD 3.0//EN” “http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd”> <hibernate-mapping> <class name=”User” table=”T_User”> <id name=”userId”> <generator class=”assigned”/> </id> <property name=”userName”/> <property name=”userAge“/> <property name=”userSex“/> </class></hibernate-mapping>
上面的配置只是hibernate實體映射的一部分,接下來詳細講解各屬性。
二:hibernate 實體映射文件結構
hiberante 的實體映射文件其實就是一個xml文件,首先要在xml文件中引用<!DOCTYPE hibernate-mapping PUBLIC
“-//Hibernate/Hibernate Mapping DTD 3.0//EN”
“http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd”> 這是固定寫法。
然後寫上根節點:<hibernate-mapping></hibernate-mapping>;
此根節點下面總共有14個主體屬性,每個主體屬性下面又會有很多小的屬性,分別如下:
<!–主要用到的主體屬性,表示和哪一個實體類進行匹配–>
<class name=”” table=””></class> class標籤詳細介紹
<!–使用該屬性可以聲明hibernate如何創建、生成數據庫–>
<database-object></database-object> database-object標籤詳細介紹
<!–使用該屬性是hibernate在進行sql語句join等時用到:聯合抓取–>
<fetch-profile name=””></fetch-profile>
<!–hibernate過濾器–>
<filter-def name=””></filter-def>filter-def標籤詳細介紹
<!–允許自定義的id生成器實現的短命名–>
<identifier-generator name=”” class=””/>
<!–導入java包,class指向該配置文件所對應實體類的包名,與class屬性中的name有關聯–>
<import class=””/>
<!–定義一個連接子類–>
<joined-subclass></joined-subclass>joined-subclass標籤詳細介紹
<!–meta屬性說明該配置文件對應實體類的一些屬性–>
<meta attribute=””></meta>meta標籤詳細介紹
<!–query標籤中可以直接寫hql查詢語句–>
<query name=””></query>query標籤詳細介紹
<!–resultset 定義了一個命名sql的返回結果-->
<resultset name=””></resultset>
<!–sql-query標籤中可以直接寫sql查詢語句–>
<sql-query name=””></sql-query>
<!–子類–>
<subclass></subclass>
<!–定義新的Hibernate數據類型–>
<typedef name=”” class=””></typedef>
<!–定義一個聯合子類–>
<union-subclass></union-subclass>
上面的14個屬性就是hibernate實體映射文件的大體結構,而其中主要用到了<class name=”” table=””></class>屬性,其它屬性視情況而定,不一定能用到。