老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

Hibernate中n+1問題的示例分析

小編給大家分享一下Hibernate中n+1問題的示例分析,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

創新互聯公司憑借專業的設計團隊扎實的技術支持、優質高效的服務意識和豐厚的資源優勢,提供專業的網站策劃、成都做網站、網站設計、網站優化、軟件開發、網站改版等服務,在成都10年的網站建設設計經驗,為成都上千多家中小型企業策劃設計了網站。

在Session的緩存中存放的是相互關聯的對象圖。默認情況下,當Hibernate從數據庫中加載Customer對象時,會同時加載所有關聯的 Order對象。以Customer和Order類為例,假定ORDERS表的CUSTOMER_ID外鍵允許為null

以下Session的find()方法用于到數據庫中檢索所有的Customer對象:

List customerLists=session.find("from Customer as c");

運行以上find()方法時,Hibernate將先查詢CUSTOMERS表中所有的記錄,然后根據每條記錄的ID,到ORDERS表中查詢有參照關系的記錄,Hibernate將依次執行以下select語句:

select * from CUSTOMERS;
select * from ORDERS where CUSTOMER_ID=1;
select * from ORDERS where CUSTOMER_ID=2;
select * from ORDERS where CUSTOMER_ID=3;
select * from ORDERS where CUSTOMER_ID=4;

通過以上5條select語句,Hibernate最后加載了4個Customer對象和5個Order對象,在內存中形成了一幅關聯的對象圖.

Hibernate在檢索與Customer關聯的Order對象時,使用了默認的立即檢索策略。這種檢索策略存在兩大不足:

(1) select語句的數目太多,需要頻繁的訪問數據庫,會影響檢索性能。如果需要查詢n個Customer對象,那么必須執行n+1次select查詢語 句。這就是經典的n+1次select查詢問題。這種檢索策略沒有利用SQL的連接查詢功能,例如以上5條select語句完全可以通過以下1條 select語句來完成:

select * from CUSTOMERS left outer join ORDERS
on CUSTOMERS.ID=ORDERS.CUSTOMER_ID

以上select語句使用了SQL的左外連接查詢功能,能夠在一條select語句中查詢出CUSTOMERS表的所有記錄,以及匹配的ORDERS表的記錄。

(2)在應用邏輯只需要訪問Customer對象,而不需要訪問Order對象的場合,加載Order對象完全是多余的操作,這些多余的Order對象白白浪費了許多內存空間。

為了解決以上問題,Hibernate提供了其他兩種檢索策略:延遲檢索策略和迫切左外連接檢索策略。延遲檢索策略能避免多余加載應用程序不需要訪問的關聯對象,迫切左外連接檢索策略則充分利用了SQL的外連接查詢功能,能夠減少select語句的數目。

對數據庫訪問還是必須考慮性能問題的, 在設定了1 對多這種關系之后, 查詢就會出現傳說中的n +1 問題。

1 )1 對多,在1 方,查找得到了n 個對象, 那么又需要將n 個對象關聯的集合取出,于是本來的一條sql查詢變成了n +1 條

2)多對1 ,在多方,查詢得到了m個對象,那么也會將m個對象對應的1 方的對象取出, 也變成了m+1

怎么解決n +1 問題?

1 )lazy=true, hibernate3開始已經默認是lazy=true了;lazy=true時不會立刻查詢關聯對象,只有當需要關聯對象(訪問其屬性,非id字段)時才會發生查詢動作。

2)二級緩存, 在對象更新,刪除,添加相對于查詢要少得多時, 二級緩存的應用將不怕n +1 問題,因為即使第一次查詢很慢,之后直接緩存命中也是很快的。
不同解決方法,不同的思路,第二條卻剛好又利用了n +1 。

3) 當然你也可以設定fetch=join(annotation : @ManyToOne() @Fetch(FetchMode.JOIN))

看完了這篇文章,相信你對“Hibernate中n+1問題的示例分析”有了一定的了解,如果想了解更多相關知識,歡迎關注創新互聯行業資訊頻道,感謝各位的閱讀!


文章標題:Hibernate中n+1問題的示例分析
網頁網址:http://www.xueling.net.cn/article/pojgji.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 99久久欧美日韩国产二区 | 亚洲在线日韩 | 久久精品国产清高在天天线 | 欧美国产二区 | 无套日出白浆17p | 亚洲AV无码A片在线观看蜜桃 | 国产一区二区怡红院 | 天堂亚洲欧美在线中文 | 麻豆一二区 | 国产又爽又刺激的视频 | 中文字幕中文字幕在线 | 99久久精品免费看国产高清 | 成在人线AV无码免观看蜜芽 | 久久九九国产精品怡红院 | 亚欧美精品 | 不卡在线 | 午夜自产精品一区二区三区 | 亚洲国产精品成人久久久软件 | 天天摸天天看 | xxxx性bbbb欧美熟妇 | 亚洲人成在线观看网站不卡 | 97精品国产97久久久久久 | 免费观看高清a级毛片视频 成人精品天堂一区二区三区 | 天天爱天天做天天做天天吃中文 | 亚洲成国产人片在线观看 | 国产视频网站在线 | 中文字幕免费日韩 | 综合久久给合久久狠狠狠97色 | 伊人天堂av无码av日韩av | 99国产精品久久久久久久成人热 | 日韩理论影院 | 日韩在线视频观看免费网站 | 最新日韩在线 | 亚洲午夜色情天天久久 | www.国产在线观看 | www.成人网.com | 91午夜免费视频 | 日本无遮挡在线观看 | 国产ts人妖一区二区三区 | 年轻的朋友6韩剧免费 | 中国国语毛片免费观看视频 |