標籤:過程 快速 blog 顯示 例子 spring 記錄 9.png image
在Web應用程式中,系統的瓶頸常在於系統的響應速度。如果系統響應速度過慢,使用者就會出現埋怨情緒,系統的價值也因此會大打折扣。因此,提高系統響應速度,是非常重要的。Web應用程式做的最多就是和後台資料庫互動,而查詢資料庫是種非常耗時的過程。當資料庫裡記錄過多時,查詢最佳化更顯得尤為重要。為瞭解決這種問題,有人提出了緩衝的概念。緩衝就是將使用者頻繁使用的資料放在記憶體中以便快速存取。在使用者執行一次查詢操作後,查詢的記錄會放在緩衝中。當使用者重新查詢時,系統會首先從緩衝中讀取,如果緩衝中沒有,再查詢資料庫。緩衝技術在一定程度上提升了系統效能,但是當資料量過大時,緩衝就不太合適了。因為記憶體容量有限,把過多的資料放在記憶體中,會影響電腦效能。而另一種技術,懶載入可以解決這種問題。懶載入(Load On Demand)是一種獨特而又強大的資料擷取方法,它能夠在使用者滾動頁面的時候自動擷取更多的資料,而新得到的資料不會影響原有資料的顯示,同時最大程度上減少伺服器端的資源耗用。考慮這樣一個例子:海爾電器是一個非常大的組織機構,它下有1萬多個組織單元。由於組織單元的複雜性,組織單元間也存在著上下級關係。現在的問題是:使用者想加入海爾電器的某個組織單元,他該怎麼選擇到這個組織單元呢?很容易想到的一個解決方案是:查詢資料庫,把海爾電器的所有組織單元放到一個下拉式清單中,讓使用者選擇即可。這樣的確是解決問題了,但是,測試發現,瀏覽器在顯示組織單中繼資料時就直接假死了。看來,這樣做效能太差,可以不採納。另一個解決方案就是利用懶載入技術。由於組織單元間存在著上下級關係,那麼組織單元的排列就可以當作一棵樹來處理。在顯示資料時只顯示父節點,點擊父節點時,就能顯示父節點下的子節點。如所示:使用者要選擇某個組織單元,只需點擊該組織單元的父親節點就能找到該組織單元。可以看出,懶載入節省了系統回應時間,提升了系統效能,非常具有利用價值。 在hibernate中,懶載入異常的解決方案就是利用spring的方案: 在web.xml中配置這個即可:
web中的懶載入