日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
淺談Hibernate Session實例

學習Hibernate時,經(jīng)常會遇到一些小問題,這里將介紹一些Hibernate問題的解決方法。包括介紹Hibernate Session實例。

10年積累的網(wǎng)站制作、做網(wǎng)站經(jīng)驗,可以快速應對客戶對網(wǎng)站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡服務。我雖然不認識你,你也不認識我。但先網(wǎng)站制作后付款的網(wǎng)站建設流程,更有壽陽免費網(wǎng)站建設讓你可以放心的選擇與我們合作。

一.在數(shù)據(jù)庫中條件查詢速度很慢的時候,如何優(yōu)化?
1.建索引
2.減少表之間的關(guān)聯(lián)
3.優(yōu)化sql,盡量讓sql很快定位數(shù)據(jù),不要讓sql做全表查詢,應該走索引,把數(shù)據(jù)量大的表排在前面
4.簡化查詢字段,沒用的字段不要,已經(jīng)對返回結(jié)果的控制,盡量返回少量數(shù)據(jù)

二.在Hibernate中進行多表查詢,每個表中各取幾個字段,也就是說查詢出來的結(jié)果集并沒有一個實體類與之對應,如何解決這個問題?

解決方案一,按照Object[]數(shù)據(jù)取出數(shù)據(jù),然后自己組bean

解決方案二,對每個表的bean寫構(gòu)造函數(shù),比如表一要查出field1,field2兩個字段,那么有一個構(gòu)造函數(shù)就是Bean(type1 filed1,type2 field2) ,然后在hql里面就可以直接生成這個bean了。具體怎么用請看相關(guān)文檔,我說的不是很清楚。

三.Session.load()和Session.get()的區(qū)別

Session.load/get方法均可以根據(jù)指定的實體類和id從數(shù)據(jù)庫讀取記錄,并返回與之對應的實體對象。其區(qū)別在于:

如果未能發(fā)現(xiàn)符合條件的記錄,get方法返回null,而load方法會拋出一個ObjectNotFoundException. Load方法可返回實體的代理類實例,而get方法永遠直接返回實體類。

load方法可以充分利用內(nèi)部緩存和二級緩存中的現(xiàn)有數(shù)據(jù),而get方法則僅僅在內(nèi)部緩存中進行數(shù)據(jù)查找,如沒有發(fā)現(xiàn)對應數(shù)據(jù),將越過二級緩存,直接調(diào)用SQL完成數(shù)據(jù)讀取。

四.Session在加載實體對象時,將經(jīng)過的過程:

首先,Hibernate中維持了兩級緩存。第一級緩存由Hibernate Session實例維護,其中保持了Session當前所有關(guān)聯(lián)實體的數(shù)據(jù),也稱為內(nèi)部緩存。而第二級緩存則存在于 SessionFactory層次,由當前所有由本SessionFactory構(gòu)造的Hibernate Session實例共享。出于性能考慮,避免無謂的數(shù)據(jù)庫訪問,Session在調(diào)用數(shù)據(jù)庫查詢功能之前,會先在緩存中進行查詢。首先在第一級緩存中,通過實體類型和id進行查找,如果第一級緩存查找命中,且數(shù)據(jù)狀態(tài)合法,則直接返回。

之后,Session會在當前“NonExists”記錄中進行查找,如果“NonExists”記錄中存在同樣的查詢條件,則返回 null.“NonExists”記錄了當前Hibernate Session實例在之前所有查詢操作中,未能查詢到有效數(shù)據(jù)的查詢條件(相當于一個查詢黑名單列表)。如此一來,如果Session中一個無效的查詢條件重復出現(xiàn),即可迅速作出判斷,從而獲得最佳的性能表現(xiàn)。

對于load方法而言,如果內(nèi)部緩存中未發(fā)現(xiàn)有效數(shù)據(jù),則查詢第二級緩存,如果第二級緩存命中,則返回。

如在緩存中未發(fā)現(xiàn)有效數(shù)據(jù),則發(fā)起數(shù)據(jù)庫查詢操作(Select SQL),如經(jīng)過查詢未發(fā)現(xiàn)對應記錄,則將此次查詢的信息在“NonExists”中加以記錄,并返回null.
◆根據(jù)映射配置和Select SQL得到的ResultSet,創(chuàng)建對應的數(shù)據(jù)對象。
◆將其數(shù)據(jù)對象納入當前Session實體管理容器(一級緩存)。
◆執(zhí)行Interceptor.onLoad方法(如果有對應的Interceptor)。
◆將數(shù)據(jù)對象納入二級緩存。
◆如果數(shù)據(jù)對象實現(xiàn)了LifeCycle接口,則調(diào)用數(shù)據(jù)對象的onLoad方法。
◆返回數(shù)據(jù)對象。

【編輯推薦】

  1. Hibernate可行性全面概括
  2. Hibernate Sequence基礎(chǔ)描述
  3. 淺析Hibernate使用EhCache
  4. Hibernate的一級Cache
  5. Hibernate update淺談

分享文章:淺談Hibernate Session實例
標題鏈接:http://www.5511xx.com/article/ccicijg.html