新聞中心
一、Hibernate3 的初始化

“真誠(chéng)服務(wù),讓網(wǎng)絡(luò)創(chuàng)造價(jià)值”是我們的服務(wù)理念,創(chuàng)新互聯(lián)公司團(tuán)隊(duì)10多年如一日始終堅(jiān)持在網(wǎng)站建設(shè)領(lǐng)域,為客戶(hù)提供優(yōu)質(zhì)服。不管你處于什么行業(yè),助你輕松跨入“互聯(lián)網(wǎng)+”時(shí)代,PC網(wǎng)站+手機(jī)網(wǎng)站+公眾號(hào)+小程序制作。
讀取Hibernate 的配置信息-〉創(chuàng)建Session Factory
1、創(chuàng)建Configeration類(lèi)的實(shí)例。
它的構(gòu)造方法:將配置信息(Hibernate config.xml)讀入到內(nèi)存。
一個(gè)Configeration 實(shí)例代表Hibernate 所有Java類(lèi)到Sql數(shù)據(jù)庫(kù)映射的集合。
2、創(chuàng)建SessionFactory實(shí)例
把Configeration 對(duì)象中的所有配置信息拷貝到SessionFactory的緩存中。 SessionFactory的實(shí)例代表一個(gè)數(shù)據(jù)庫(kù)存儲(chǔ)員源,創(chuàng)建后不再與Configeration 對(duì)象關(guān)聯(lián)。緩存(cache):指Java對(duì)象的屬性(通常是一些集合類(lèi)型的屬性--占用內(nèi)存空間。 SessionFactory的緩存中:Hibernate 配置信息。OR映射元數(shù)據(jù)。 緩存-大:重量級(jí)對(duì)象 ?。狠p量級(jí)對(duì)象
3、調(diào)用SessionFactory創(chuàng)建Session的方法
(1)用戶(hù)自行提供JDBC連接。
Connection con=dataSource.getConnection();
Session s=sessionFactory.openSession(con);
(2)讓SessionFactory提供連接
Session s=sessionFactory.openSession();
4、通過(guò)Session 接口提供的各種方法來(lái)操縱數(shù)據(jù)庫(kù)訪問(wèn)。
二、Hibernate3 的緩存體系:
一級(jí)緩存:
Session 有一個(gè)內(nèi)置的緩存,其中存放了被當(dāng)前工作單元加載的對(duì)象。每個(gè)Session 都有自己獨(dú)立的緩存,且只能被當(dāng)前工作單元訪問(wèn)。
二級(jí)緩存:
SessionFactory的外置的可插拔的緩存插件。其中的數(shù)據(jù)可被多個(gè)Session共享訪問(wèn)。SessionFactory的內(nèi)置緩存:存放了映射元數(shù)據(jù),預(yù)定義的Sql語(yǔ)句。
三、Hibernate3 中Java對(duì)象的狀態(tài)
1、臨時(shí)狀態(tài) (transient)
特征:
(1)不處于Session 緩存中
(2)數(shù)據(jù)庫(kù)中沒(méi)有對(duì)象記錄
Java如何進(jìn)入臨時(shí)狀態(tài):
(1)通過(guò)new語(yǔ)句剛創(chuàng)建一個(gè)對(duì)象時(shí)
(2)當(dāng)調(diào)用Session 的delete()方法,從Session 緩存中刪除一個(gè)對(duì)象時(shí)。
2、持久化狀態(tài)(persisted)
特征:
(1)處于Session 緩存中
(2)持久化對(duì)象數(shù)據(jù)庫(kù)中設(shè)有對(duì)象記錄
(3)Session 在特定時(shí)刻會(huì)保持二者同步
Java如何進(jìn)入持久化狀態(tài):
(1)Session 的save()把臨時(shí)-》持久化狀態(tài)
(2)Session 的load(),get()方法返回的對(duì)象
(3)Session 的find()返回的list集合中存放的對(duì)象
(4)Session 的update(),saveOrupdate()使游離-》持久化
3、游離狀態(tài)(detached)
特征:
(1)不再位于Session 緩存中
(2)游離對(duì)象由持久化狀態(tài)轉(zhuǎn)變而來(lái),數(shù)據(jù)庫(kù)中可能還有對(duì)應(yīng)記錄。
Java如何進(jìn)入持久化狀態(tài)-》游離狀態(tài)
(1)Session 的close()方法
(2)Session 的evict()方法,從緩存中刪除一個(gè)對(duì)象。提高性能。少用。
研究了兩天的 Hibernate,看了很多資料,也拜讀了其關(guān)鍵類(lèi),感覺(jué)自己有很多地方需要學(xué)習(xí)。比如說(shuō)Hibernate的緩存機(jī)制是怎么實(shí)現(xiàn)的,Hibernate在封裝JDBC和JTA時(shí)都做了些什么,其ORM是怎么實(shí)現(xiàn)的等等。要弄清這些東西估計(jì)需要很長(zhǎng)時(shí)間的摸索和積累,也只有在實(shí)際應(yīng)用中不斷加深對(duì)它們的理解了:)下面,我將最近兩天的收獲總結(jié)一下,主要敘述一下Hibernate的基本工作原理。對(duì)于Hibernate的緩存機(jī)制、基于JDBC和JTA的事務(wù)處理及其ORM的實(shí)現(xiàn)等技術(shù),以后慢慢再補(bǔ)吧。
所謂Hibernate的基本工作原理,換言之,也就是Hibernate大體的工作流程。在這里,我們仿照前面對(duì)Struts基本原理的闡述方法,僅將其原理圖呈現(xiàn)給大家,詳細(xì)文字說(shuō)明在此略過(guò)(個(gè)人認(rèn)為這張圖對(duì)Hibernate基本工作過(guò)程的敘述已經(jīng)足夠全面了,所以沒(méi)必要再用文字說(shuō)明,如果還是不明白,請(qǐng)您給我留言或者查看相關(guān)資料)。
當(dāng)前文章:Hibernate3的工作原理
本文URL:http://fisionsoft.com.cn/article/dpogjop.html


咨詢(xún)
建站咨詢(xún)
