新聞中心
Hibernate還是比較常用的,于是我研究了一下Hibernate檢索策略,在這里拿出來(lái)和大家分享一下,希望對(duì)大家有用。

站在用戶(hù)的角度思考問(wèn)題,與客戶(hù)深入溝通,找到鐵西網(wǎng)站設(shè)計(jì)與鐵西網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶(hù)體驗(yàn)好的作品,建站類(lèi)型包括:網(wǎng)站建設(shè)、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、主機(jī)域名、雅安服務(wù)器托管、企業(yè)郵箱。業(yè)務(wù)覆蓋鐵西地區(qū)。
Hibernate檢索策略包括類(lèi)級(jí)別檢索策略和關(guān)聯(lián)級(jí)別檢索策略。
類(lèi)級(jí)別檢索策略有立即檢索和延遲檢索,默認(rèn)的檢索策略是立即檢索。在Hibernate映射文件中,通過(guò)在
關(guān)聯(lián)級(jí)別檢索策略有立即檢索、延遲檢索和迫切左外連接檢索。對(duì)于關(guān)聯(lián)級(jí)別檢索,又可分為一對(duì)多和多對(duì)多、多對(duì)一和一對(duì)一兩種情況討論。
一對(duì)多和多對(duì)多關(guān)聯(lián)關(guān)系一般使用
1.立即檢索:這是一對(duì)多默認(rèn)的檢索策略,此時(shí)lazy=false,outer-join=false.盡管這是默認(rèn)的檢索策略,但如果關(guān)聯(lián)的集合是無(wú)用的,那么就不要使用這種檢索方式。
2.延遲檢索:此時(shí)lazy=true,outer-join=false(outer-join=true是無(wú)意義的.,這是優(yōu)先考慮的檢索方式。
3.迫切左外連接檢索:此時(shí) lazy=false,outer-join=true,這種檢索策略只適用于依靠id檢索方式(load、get.,而不適用于query的集合檢索(它會(huì)采用立即檢索策略.。相比于立即檢索,這種檢索策略減少了一條sql語(yǔ)句,但在Hibernate中,只能有一個(gè)
多對(duì)一和一對(duì)一檢索策略一般使用
1.outer-join=auto:這是默認(rèn)值,如果lazy=true為延遲檢索,如果lazy=false為迫切左外連接檢索。
2.outer-join=true:無(wú)關(guān)于lazy,都為迫切左外連接檢索。
3.outer-join=false:如果lazy=true為延遲檢索,否則為立即檢索。
可以看到,在默認(rèn)的情況下(outer-join=auto,lazy=false.,對(duì)關(guān)聯(lián)的one端對(duì)象Hibernate采用的迫切左外連接檢索。依我看,很多情況下,我們并不需要加載one端關(guān)聯(lián)的對(duì)象(很可能我們需要的僅僅是關(guān)聯(lián)對(duì)象的id.;另外,如果關(guān)聯(lián)對(duì)象也采用了迫切左外連接檢索,就會(huì)出現(xiàn)select語(yǔ)句中有多個(gè)外連接表,如果個(gè)數(shù)多的話(huà)會(huì)影響檢索性能,這也是為什么Hibernate通過(guò)hibernate.max_fetch_depth屬性來(lái)控制外連接的深度。對(duì)于迫切左外連接檢索,query的集合檢索并不適用,它會(huì)采用立即檢索策略。
對(duì)于Hibernate檢索策略,需要根據(jù)實(shí)際情況進(jìn)行選擇。對(duì)于立即檢索和延遲檢索,它們的優(yōu)點(diǎn)在于select語(yǔ)句簡(jiǎn)單(每張表一條語(yǔ)句),查詢(xún)速度快,缺點(diǎn)在于關(guān)聯(lián)表時(shí)需要多條select語(yǔ)句,增加了訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的頻率。因此在選擇即檢索和延遲檢索時(shí),可以考慮使用批量檢索策略來(lái)減少select語(yǔ)句的數(shù)量(配置batch-size屬性)。對(duì)于切左外連接檢索,優(yōu)點(diǎn)在于select較少,但缺點(diǎn)是select語(yǔ)句的復(fù)雜度提高,多表之間的關(guān)聯(lián)會(huì)是很耗時(shí)的操作。另外,配置文件是死的,但程序是活的,可以根據(jù)需要在程序里顯示的指定檢索策略(可能經(jīng)常需要在程序中顯示指定迫切左外連接檢索)。為了清楚檢索策略的配置效果如何,可以配置show_sql屬性查看程序運(yùn)行時(shí)Hibernate執(zhí)行的sql語(yǔ)句。
【編輯推薦】
- 簡(jiǎn)單描述Hibernate單元測(cè)試
- 概括Hibernate多表關(guān)聯(lián)查詢(xún)
- 淺談Hibernate Session Factory
- 淺析Hibernate加載配置文件
- 深入剖析Hibernate核心接口
當(dāng)前標(biāo)題:概括Hibernate檢索策略
當(dāng)前地址:http://m.5511xx.com/article/ccccdeg.html


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