Hibernate(二)HelloWord

一说搅、Hibernate開發(fā)步驟

1. 創(chuàng)建 Hibernate 配置文件

2. 創(chuàng)建持久化類

3. 創(chuàng)建對(duì)象-關(guān)系映射文件

4. 通過 Hibernate API 編寫訪問數(shù)據(jù)庫(kù)的代碼

二兆览、示例

(1)先導(dǎo)入hibernate必須的包

(2)新建一個(gè)hibernate配置文件

(3)New.java

(4)對(duì)象關(guān)系映射文件

(5)測(cè)試

其中

(6)成功

三偶垮、Helloworld詳解

1. 創(chuàng)建持久化 Java 類

提供一個(gè)無(wú)參的構(gòu)造器:使Hibernate可以使用Constructor.newInstance() 來(lái)實(shí)例化持久化類

提供一個(gè)標(biāo)識(shí)屬性(identifier property): 通常映射為數(shù)據(jù)庫(kù)表的主鍵字段. 如果沒有該屬性,一些功能將不起作用浇垦,如:Session.saveOrUpdate()

為類的持久化類字段聲明訪問方法(get/set): Hibernate對(duì)JavaBeans 風(fēng)格的屬性實(shí)行持久化氯材。

使用非 final 類: 在運(yùn)行時(shí)生成代理是 Hibernate 的一個(gè)重要的功能. 如果持久化類沒有實(shí)現(xiàn)任何接口, Hibnernate 使用 CGLIB 生成代理. 如果使用的是 final 類, 則無(wú)法生成 CGLIB 代理.

重寫 eqauls 和 hashCode 方法: 如果需要把持久化類的實(shí)例放到 Set 中(當(dāng)需要進(jìn)行關(guān)聯(lián)映射時(shí)), 則應(yīng)該重寫這兩個(gè)方法

Hibernate 不要求持久化類繼承任何父類或?qū)崿F(xiàn)接口,這可以保證代碼不被污染诚些。這就是Hibernate被稱為低侵入式設(shè)計(jì)的原因

2. 創(chuàng)建對(duì)象-關(guān)系映射文件

Hibernate 采用 XML 格式的文件來(lái)指定對(duì)象和關(guān)系數(shù)據(jù)之間的映射. 在運(yùn)行時(shí) Hibernate 將根據(jù)這個(gè)映射文件來(lái)生成各種 SQL 語(yǔ)句

映射文件的擴(kuò)展名為 .hbm.xml

3. 創(chuàng)建 Hibernate 配置文件

Hibernate 從其配置文件中讀取和數(shù)據(jù)庫(kù)連接的有關(guān)信息飞傀,這個(gè)文件應(yīng)該位于應(yīng)用的 classpath 下皇型。

4. 通過 Hibernate API 編寫訪問數(shù)據(jù)庫(kù)的代碼

四、使用 Hibernate 進(jìn)行數(shù)據(jù)持久化操作砸烦,通常有如下步驟:

編寫持久化類: POJO + 映射文件

獲取 Configuration 對(duì)象

獲取 SessionFactory 對(duì)象

獲取 Session弃鸦,打開事務(wù)

用面向?qū)ο蟮姆绞讲僮鲾?shù)據(jù)庫(kù)

關(guān)閉事務(wù),關(guān)閉 Session

五幢痘、Configuration 類

Configuration 類負(fù)責(zé)管理 Hibernate 的配置信息唬格。包括如下內(nèi)容:

Hibernate 運(yùn)行的底層信息:數(shù)據(jù)庫(kù)的URL、用戶名颜说、密碼购岗、JDBC驅(qū)動(dòng)類,數(shù)據(jù)庫(kù)Dialect,數(shù)據(jù)庫(kù)連接池等(對(duì)應(yīng) hibernate.cfg.xml 文件)门粪。

持久化類與數(shù)據(jù)表的映射關(guān)系(*.hbm.xml 文件)

創(chuàng)建 Configuration 的兩種方式

(1)屬性文件(hibernate.properties):Configuration cfg = new Configuration();

(2)Xml文件(hibernate.cfg.xml)

Configuration cfg = new Configuration().configure();

注:Configuration 的 configure 方法還支持帶參數(shù)的訪問:

File file = new File(“simpleit.xml”);

Configuration cfg = new Configuration().configure(file);

六喊积、SessionFactory 接口

針對(duì)單個(gè)數(shù)據(jù)庫(kù)映射關(guān)系經(jīng)過編譯后的內(nèi)存鏡像,是線程安全的庄拇。

SessionFactory 對(duì)象一旦構(gòu)造完畢注服,即被賦予特定的配置信息。

SessionFactory是生成Session的工廠措近。

構(gòu)造 SessionFactory 很消耗資源溶弟,一般情況下一個(gè)應(yīng)用中只初始化一個(gè) SessionFactory 對(duì)象。

Hibernate4 新增了一個(gè) ServiceRegistry 接口瞭郑,所有基于 Hibernate 的配置或者服務(wù)都必須統(tǒng)一向這個(gè) ServiceRegistry? 注冊(cè)后才能生效辜御。

Hibernate4 中創(chuàng)建 SessionFactory 的步驟

七、Session 接口

Session 是應(yīng)用程序與數(shù)據(jù)庫(kù)之間交互操作的一個(gè)單線程對(duì)象屈张,是 Hibernate 運(yùn)作的中心擒权,所有持久化對(duì)象必須在 session 的管理下才可以進(jìn)行持久化操作。此對(duì)象的生命周期很短阁谆。Session 對(duì)象有一個(gè)一級(jí)緩存碳抄,顯式執(zhí)行 flush 之前,所有的持久層操作的數(shù)據(jù)都緩存在 session 對(duì)象處场绿。相當(dāng)于 JDBC 中的 Connection剖效。

持久化類與 Session 關(guān)聯(lián)起來(lái)后就具有了持久化的能力。

Session 類的方法:

取得持久化對(duì)象的方法: get() load()

持久化對(duì)象都得保存焰盗,更新和刪除:save(),update(),saveOrUpdate(),delete()

開啟事務(wù): beginTransaction().

管理 Session 的方法:isOpen(),flush(), clear(), evict(), close()等

八璧尸、Transaction(事務(wù))

代表一次原子操作,它具有數(shù)據(jù)庫(kù)事務(wù)的概念熬拒。所有持久層都應(yīng)該在事務(wù)管理下進(jìn)行爷光,即使是只讀操作。

? Transaction tx = session.beginTransaction();

常用方法:

commit():提交相關(guān)聯(lián)的session實(shí)例

rollback():撤銷事務(wù)操作

wasCommitted():檢查事務(wù)是否提交

九澎粟、Hibernate 配置文件的兩個(gè)配置項(xiàng)

(1)hbm2ddl.auto:該屬性可幫助程序員實(shí)現(xiàn)正向工程, 即由 java 代碼生成數(shù)據(jù)庫(kù)腳本, 進(jìn)而生成具體的表結(jié)構(gòu). 蛀序。取值 create | update | create-drop | validate

create : 會(huì)根據(jù) .hbm.xml? 文件來(lái)生成數(shù)據(jù)表, 但是每次運(yùn)行都會(huì)刪除上一次的表 ,重新生成表, 哪怕二次沒有任何改變

create-drop : 會(huì)根據(jù) .hbm.xml 文件生成表,但是SessionFactory一關(guān)閉, 表就自動(dòng)刪除

update : 最常用的屬性值欢瞪,也會(huì)根據(jù) .hbm.xml 文件生成表, 但若 .hbm.xml? 文件和數(shù)據(jù)庫(kù)中對(duì)應(yīng)的數(shù)據(jù)表的表結(jié)構(gòu)不同, Hiberante? 將更新數(shù)據(jù)表結(jié)構(gòu),但不會(huì)刪除已有的行和列

validate : 會(huì)和數(shù)據(jù)庫(kù)中的表進(jìn)行比較, 若 .hbm.xml 文件中的列在數(shù)據(jù)表中不存在哼拔,則拋出異常

(2)format_sql:是否將 SQL 轉(zhuǎn)化為格式良好的 SQL . 取值 true | false

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末引有,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子倦逐,更是在濱河造成了極大的恐慌,老刑警劉巖宫补,帶你破解...
    沈念sama閱讀 222,183評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件檬姥,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡粉怕,警方通過查閱死者的電腦和手機(jī)健民,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)贫贝,“玉大人秉犹,你說(shuō)我怎么就攤上這事≈赏恚” “怎么了崇堵?”我有些...
    開封第一講書人閱讀 168,766評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)客燕。 經(jīng)常有香客問我鸳劳,道長(zhǎng),這世上最難降的妖魔是什么也搓? 我笑而不...
    開封第一講書人閱讀 59,854評(píng)論 1 299
  • 正文 為了忘掉前任赏廓,我火速辦了婚禮,結(jié)果婚禮上傍妒,老公的妹妹穿的比我還像新娘幔摸。我一直安慰自己,他們只是感情好颤练,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,871評(píng)論 6 398
  • 文/花漫 我一把揭開白布既忆。 她就那樣靜靜地躺著,像睡著了一般昔案。 火紅的嫁衣襯著肌膚如雪尿贫。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評(píng)論 1 311
  • 那天踏揣,我揣著相機(jī)與錄音庆亡,去河邊找鬼。 笑死捞稿,一個(gè)胖子當(dāng)著我的面吹牛又谋,可吹牛的內(nèi)容都是我干的拼缝。 我是一名探鬼主播,決...
    沈念sama閱讀 40,999評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼彰亥,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼咧七!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起任斋,我...
    開封第一講書人閱讀 39,914評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤继阻,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后废酷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體瘟檩,經(jīng)...
    沈念sama閱讀 46,465評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,543評(píng)論 3 342
  • 正文 我和宋清朗相戀三年澈蟆,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了墨辛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,675評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡趴俘,死狀恐怖睹簇,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情寥闪,我是刑警寧澤太惠,帶...
    沈念sama閱讀 36,354評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站橙垢,受9級(jí)特大地震影響垛叨,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜柜某,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,029評(píng)論 3 335
  • 文/蒙蒙 一嗽元、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧喂击,春花似錦剂癌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至监嗜,卻和暖如春谐檀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背裁奇。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工桐猬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人刽肠。 一個(gè)月前我還...
    沈念sama閱讀 49,091評(píng)論 3 378
  • 正文 我出身青樓溃肪,卻偏偏與公主長(zhǎng)得像免胃,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子惫撰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,685評(píng)論 2 360

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

  • Hibernate: 一個(gè)持久化框架 一個(gè)ORM框架 加載:根據(jù)特定的OID,把一個(gè)對(duì)象從數(shù)據(jù)庫(kù)加載到內(nèi)存中OID...
    JHMichael閱讀 1,979評(píng)論 0 27
  • 本文包括: 1羔沙、CRM 項(xiàng)目的整體介紹 2、Hibernate 框架概述 3厨钻、Hibernate 快速入門 4扼雏、H...
    廖少少閱讀 3,476評(píng)論 9 66
  • 本文中我們介紹并比較兩種最流行的開源持久框架:iBATIS和Hibernate呢蛤,我們還會(huì)討論到Java Persi...
    大同若魚閱讀 4,315評(píng)論 4 27
  • 目錄 1. Hibernate框架的概述 1.1 Hibernate簡(jiǎn)介 1.2 為什么要學(xué)習(xí)Hibernate ...
    深海魚Q閱讀 1,024評(píng)論 0 14
  • 連上兩節(jié)課 真的有效 開口就說(shuō)thank you 我腦袋里的那撮草可能該澆水了 看個(gè)電影都能看暈車 凝住了所以看運(yùn)...
    咸酥閱讀 186評(píng)論 0 0