Hibernate配置文件中映射元素詳解

對象關(guān)系的映射是用一個XML文檔來說明的礁芦。映射文檔可以使用工具來生成逊抡,如XDoclet咱台,Middlegen和AndroMDA等。下面從一個映射的例子開始講解映射元素趾盐,映射文件的代碼如下。

<?xml version="1.0"?>

<!--

所有的XML映射文件都需要定義如下所示的DOCTYPE吸奴。

Hibernate會先在它的類路徑(classptah)中搜索DTD文件隐绵。

-->

<!DOCTYPE hibernate-mapping PUBLIC

"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<!--

hibernate-mapping有幾個可選的屬性:

schema屬性指明了這個映射的表所在的schema名稱。

default-cascade屬性指定了默認的級聯(lián)風(fēng)格 可取值有 none盲链、save赏表、update。

auto-import屬性默認讓我們在查詢語言中可以使用非全限定名的類名 可取值有 true匈仗、false瓢剿。

package屬性指定一個包前綴。

-->

<hibernate-mapping schema="schemaName" default-cascade="none"

auto-import="true" package="test">

<!--用class元素來定義一個持久化類 -->

<class name="People" table="person">

<!-- id元素定義了屬性到數(shù)據(jù)庫表主鍵字段的映射悠轩。-->

<id name="id">

<!-- 用來為該持久化類的實例生成唯一的標識 -->

<generator class="native"/>

</id>

<!-- discriminator識別器 是一種定義繼承關(guān)系的映射方法-->

<discriminator column="subclass" type="character"/>

<!-- property元素為類聲明了一個持久化的间狂,JavaBean風(fēng)格的屬性-->

<property name="name" type="string">

<column name="name" length="64" not-null="true" />

</property>

<property name="sex"

not-null="true"

update="false"/>

<!--多對一映射關(guān)系-->

<many-to-one name="friend"

column="friend_id"

update="false"/>

<!--設(shè)置關(guān)聯(lián)關(guān)系-->

<set name="friends" inverse="true" order-by="id">

<key column="friend_id"/>

<!—一對多映射-->

<one-to-many class="Cat"/>

</set>

</class>

</hibernate-mapping>

組件應(yīng)用的方法

組件有兩種類型,即組件(component)和動態(tài)組件(dynamic-component)火架。在配置文件中鉴象,component元素為子對象的元素與父類對應(yīng)表的字段建立起映射關(guān)系忙菠。然后組件可以聲明它們自己的屬性、組件或者集合纺弊。component元素的定義如下所示:

<component name="propertyName" class="className" insert="true|false"

upate="true|false" access="field|property|ClassName">

<property ...../>

<many-to-one .... />

........

</component>

在這段代碼中牛欢,name是指屬性名,class是類的名字淆游,insert指的是被映射的字段是否出現(xiàn)在SQL的INSERT語句中傍睹,upate指出被映射的字段是否出現(xiàn)在SQL的UPDATE語句中,access指出訪問屬性的策略犹菱。

Hiebernate的基本配置

Hibernate的數(shù)據(jù)庫連接信息是從配置文件中加載的拾稳。Hibernate的配置文件有兩種形式:一種是XML格式的文件,一種是properties屬性文件腊脱。properties形式的配置文件默認文件名是hibernate.properties访得,一個properties形式的配置文件內(nèi)容如下所示:

#指定數(shù)據(jù)庫使用的驅(qū)動類

hibernate.connection.driver_class = com.mysql.jdbc.Driver r

#指定數(shù)據(jù)庫連接串

hibernate.connection.url = jdbc:mysql://localhost:3306/db

#指定數(shù)據(jù)庫連接的用戶名

hibernate.connection.username = user

#指定數(shù)據(jù)庫連接的密碼

hibernate.connection.password = password

#指定數(shù)據(jù)庫使用的方言

hibernate.dialect = net.sf.hibernate.dialect.MySQLDialect

#指定是否打印SQL語句

hibernate.show_sql=true

在配置文件中包含了一系列屬性的配置,Hibernate將根據(jù)這些屬性來連接數(shù)據(jù)庫陕凹。

在XML格式的配置文件中悍抑,除了基本的Hibernate配置信息,還可以指定具體的持久化類的映射文件杜耙,這可以避免將持久化類的配置文件硬編碼在程序中传趾。XML格式的配置文件的默認文件名為hibernate.cfg.xml,一個XML配置文件的示例如下所示:

<?xml version='1.0' encoding='UTF-8'?>

<!DOCTYPE hibernate-configuration PUBLIC

"-//Hibernate/Hibernate Mapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-configuration>

<session-factory>

<!--顯示執(zhí)行的SQL語句-->

<property name="show_sql">true</property>

<!--連接字符串-->

<property name="connection.url">jdbc:mysql://localhost:3306/STU</property>

<!--連接數(shù)據(jù)庫的用戶名-->

<property name="connection.username">root</property>

<!--數(shù)據(jù)庫用戶密碼-->

<property name="connection.password">root</property>

<!--數(shù)據(jù)庫驅(qū)動-->

<property name="connection.driver_class">com.mysql.jdbc.Driver</property>

<!--選擇使用的方言-->

<property name="dialect">org.hibernate.dialect.MySQLDialect</property>

<!--映射文件 -->

<mapping resource="com/stuman/domain/Admin.hbm.xml" />

<!--映射文件-->

<mapping resource="com/stuman/domain/Student.hbm.xml" />

</session-factory>

</hibernate-configuration>

properties形式的配置文件和XML格式的配置文件可以同時使用泥技。當同時使用兩種類型的配置文件時浆兰,XML配置文件中的設(shè)置會覆蓋properties配置文件的相同的屬性。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末珊豹,一起剝皮案震驚了整個濱河市簸呈,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌店茶,老刑警劉巖蜕便,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異贩幻,居然都是意外死亡轿腺,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門丛楚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來族壳,“玉大人,你說我怎么就攤上這事趣些》戮#” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長拢操。 經(jīng)常有香客問我锦亦,道長,這世上最難降的妖魔是什么令境? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任杠园,我火速辦了婚禮,結(jié)果婚禮上舔庶,老公的妹妹穿的比我還像新娘抛蚁。我一直安慰自己,他們只是感情好栖茉,可當我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著孵延,像睡著了一般吕漂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上尘应,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天惶凝,我揣著相機與錄音,去河邊找鬼犬钢。 笑死苍鲜,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的玷犹。 我是一名探鬼主播混滔,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼歹颓!你這毒婦竟也來了坯屿?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤巍扛,失蹤者是張志新(化名)和其女友劉穎领跛,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體撤奸,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡吠昭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了胧瓜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片矢棚。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖府喳,靈堂內(nèi)的尸體忽然破棺而出幻妓,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布肉津,位于F島的核電站强胰,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏妹沙。R本人自食惡果不足惜偶洋,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望距糖。 院中可真熱鬧玄窝,春花似錦、人聲如沸悍引。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽趣斤。三九已至俩块,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間浓领,已是汗流浹背玉凯。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留联贩,地道東北人漫仆。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像泪幌,于是被迫代替她去往敵國和親盲厌。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Hibernate中配置主要分為兩種:一種包含了Hibernate與數(shù)據(jù)庫的基本連接信息祸泪,在Hibernate工作...
    FTOLsXD閱讀 2,043評論 0 10
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理狸眼,服務(wù)發(fā)現(xiàn),斷路器浴滴,智...
    卡卡羅2017閱讀 134,654評論 18 139
  • ORM概念 ORM, 對象關(guān)系映射拓萌!O : Object對象R : Realtion關(guān)系(關(guān)系型數(shù)據(jù)庫: MySQ...
    奮斗的老王閱讀 1,014評論 0 51
  • Hibernate: 一個持久化框架 一個ORM框架 加載:根據(jù)特定的OID,把一個對象從數(shù)據(jù)庫加載到內(nèi)存中OID...
    JHMichael閱讀 1,967評論 0 27
  • 來到大學(xué)應(yīng)該做什么呢?這四年該如何度過呢升略? 金秋九月微王,剛?cè)雽W(xué)的我與大多數(shù)同學(xué)一樣,懷揣著夢想品嚣,充...
    SinclairY閱讀 181評論 0 0