Hibernate13-Hibernate 延遲加載&立即加載

** 延遲加載的好處**
1.降低了內(nèi)存的開銷沽损,在用到某些數(shù)據(jù)的時候才會到數(shù)據(jù)中進(jìn)行查詢。
2.提高了程序運行性能循头。
注:如果session被關(guān)閉了,而你又想用到某些數(shù)據(jù)炎疆,這個時候使用延遲加載會出錯卡骂;需要立即加載或者使用OpenSessionInView。

** 立即加載的壞處**
1.select語句的數(shù)目太多形入,需要頻繁的訪問數(shù)據(jù)庫全跨,會影響查詢性能。2.如在應(yīng)用程序只需要訪問DEPT對象亿遂,而不需要訪問EMP對象的場合浓若,加載EMP對象完全是多余的操作渺杉,這些EMP對象白白浪費了內(nèi)存空間。注:如果session被關(guān)閉了挪钓,而你想訪問EMP對象是越,這個時候是不會出錯的,因為對象都被加載到內(nèi)存了碌上。

** lazy屬性**
類級別
????1.true 延遲加載(默認(rèn)值)
????2.false 立即加載
一對多級聯(lián)級別
????1.true 延遲加載(默認(rèn)值)
????2.extra 增強延遲加載
????3.false 立即加載
多對一關(guān)聯(lián)級別
????1.proxy 延遲加載(默認(rèn)值)
????2.no-proxy 無代理延遲加載
????3.false 立即加載

類級別倚评,使用<class>元素來配置加載策略
立即加載
????將lazy屬性設(shè)置為false則為立即加載。
????當(dāng)時用load方法查詢數(shù)據(jù)的時候馏予,會立即執(zhí)行一條select語句天梧,來查詢出數(shù)據(jù)。
延遲加載
????如果程序加載一個持久化對象的目的是為了訪問它的屬性霞丧,則可以采用立即加載呢岗。如果程序加載一個持久化類對象的目的僅僅是為了獲取它的引用,而不訪問它的數(shù)據(jù)蛹尝,則可以使用延遲加載后豫。例如:

Dept dept = (Dept)session.load(Dept.class, 10);
Emp emp = new Emp(1,"TOM");
emp.setDept(dept);
session.save(emp);

????說明向數(shù)據(jù)保存了一個Emp對象,他與一個Dept對象進(jìn)行了關(guān)聯(lián)箩言。

如果Dept使用了延遲加載硬贯,則session不會執(zhí)行select語句來查詢對應(yīng)的數(shù)據(jù),這個時候Dept對象中的ID屬性為你設(shè)置的10陨收,其他屬性則為null饭豹,這是load方法的特點。

一對多和多對多關(guān)聯(lián)的查詢策略务漩,使用<set>元素來配置一對多或多對多加載策略<set>元素的lazy屬性拄衰,主要決定Dept對象的emps集合(emps屬性是Set集合)被初始化的時機,到底是加載Dept對象時就被初始化(從數(shù)據(jù)查詢數(shù)據(jù))饵骨,還是在程序訪問emps集合的時候在初始化翘悉。
立即加載
????通過Session的get方法加載ID為10的Dept對象。
????hibernate會執(zhí)行兩條select語句居触,第一條是select * from Dept where deptno = 妖混?第二條select * from Emp where DEPTNO = ?
????也就是說使用立即查詢轮洋,不管你有沒有用到emps集合中的數(shù)據(jù)制市,Hibernate都將給你查詢出來,放到內(nèi)存中弊予。
延遲加載
????延時加載只會先執(zhí)行一條select語句祥楣,select * from Dept where deptno = ?。
????當(dāng)你使用到了emps集合的時候误褪,才會執(zhí)行第二條select * from Emp where DEPTNO = 责鳍?語句來查詢出對應(yīng)的數(shù)據(jù)。

多對一關(guān)聯(lián)的查詢策略,在<many-to-no>元素用來設(shè)設(shè)置兽间。
立即加載
????立即加載和上面一樣历葛,會執(zhí)行兩條select語句來加載數(shù)據(jù)。
延遲加載
????當(dāng)使用get方法時渡八,立即執(zhí)行查詢Emp對象的select語句啃洋,Emp對象的dept屬性引用Dept代理類的實例,這個代理類實例的OID有EMP表的DEPTNO外鍵值決定屎鳍。
????當(dāng)使用dept屬性的時候才會執(zhí)行select語句來查詢Dept信息宏娄。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市逮壁,隨后出現(xiàn)的幾起案子孵坚,更是在濱河造成了極大的恐慌,老刑警劉巖窥淆,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卖宠,死亡現(xiàn)場離奇詭異,居然都是意外死亡忧饭,警方通過查閱死者的電腦和手機扛伍,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來词裤,“玉大人刺洒,你說我怎么就攤上這事『鹕埃” “怎么了逆航?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長渔肩。 經(jīng)常有香客問我因俐,道長,這世上最難降的妖魔是什么周偎? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任抹剩,我火速辦了婚禮,結(jié)果婚禮上蓉坎,老公的妹妹穿的比我還像新娘吧兔。我一直安慰自己,他們只是感情好袍嬉,可當(dāng)我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般伺通。 火紅的嫁衣襯著肌膚如雪箍土。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天罐监,我揣著相機與錄音吴藻,去河邊找鬼。 笑死弓柱,一個胖子當(dāng)著我的面吹牛沟堡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播矢空,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼航罗,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了屁药?” 一聲冷哼從身側(cè)響起粥血,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎酿箭,沒想到半個月后复亏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡缭嫡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年缔御,在試婚紗的時候發(fā)現(xiàn)自己被綠了盗蟆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片垂寥。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖芹橡,靈堂內(nèi)的尸體忽然破棺而出讥耗,到底是詐尸還是另有隱情有勾,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布古程,位于F島的核電站蔼卡,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏挣磨。R本人自食惡果不足惜雇逞,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望茁裙。 院中可真熱鬧塘砸,春花似錦、人聲如沸晤锥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至女轿,卻和暖如春箭启,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蛉迹。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工傅寡, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人北救。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓荐操,卻偏偏與公主長得像,于是被迫代替她去往敵國和親珍策。 傳聞我的和親對象是個殘疾皇子托启,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,465評論 2 348

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

  • 查詢是數(shù)據(jù)的一個重要操作。用戶發(fā)送查詢請求膛壹,經(jīng)編譯軟件變異成二進(jìn)制文件供服務(wù)器查詢驾中,后返回查詢結(jié)果集給用戶,查詢會...
    產(chǎn)品小正閱讀 1,372評論 0 2
  • 5.多表查詢 多表查詢 目的:從多張表獲取數(shù)據(jù) 前提:進(jìn)行連接的多張表中有共同的列 等連接 通過兩個表具有相同意義...
    喬震閱讀 1,209評論 0 0
  • SQL ==SQLPLUS== DML(Data Manipulation Language,數(shù)據(jù)操作語言)---...
    蝌蚪1573閱讀 583評論 0 4
  • 1. select * from emp; 2. select empno, ename, job from em...
    海納百川_4d26閱讀 1,895評論 0 4
  • 聲明:本文系轉(zhuǎn)載模聋,已得到作者Dialing授權(quán) 總的用戶331萬肩民,日活量27.7萬 脫不花時間 欣賞自我領(lǐng)導(dǎo),自我...
    劉云杰閱讀 183評論 0 1