熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java開源技術 >> 正文

Hibernate的延遲加載,一個鋒利的兩面刀

2013-11-23 20:50:34  來源: Java開源技術 

  延遲加載是罪魁禍首所謂成也蕭何敗也蕭何

  我有時發現查詢速度很慢檢查才發現是我沒有啟用延遲加載造成遞歸的數據都被加載進來了

  我如果加上了延遲加載那麼許多頁面將無法使用必須在程序裡進行代碼級別的遞歸的延遲加載數據的讀取

  這裡面涉及到的策略太麻煩了

  對於關聯少層次低的用著沒問題一旦層次太多了我寧可放棄面向對象改用單純的一個表一個對象的策略都保存字段就行了

  需要別的關聯的數據我寧可再次讀取畢竟有緩沖速度影響不是很大的而且單表的緩沖性能絕對好

  還有對於 opensessioninview 這個東西感覺上可以解決這個問題但實際上為了這是為了解決延遲加載而做出的一個愚蠢的決策

  對於使用量很小的沒啥可討論的怎麼做都沒關系對於使用量大的

   對於小數據量我寧可讓其非延遲加載這樣可以盡快的釋放數據庫資源特別是一些鎖

   對於大數據量我想我們需要一個專門的類來保存操作結果讓其只返回我們需要的東西而不是用什麼延遲加載比如我們一個訂單查詢只用到了客戶的名字我們完全沒有必要延遲加載客戶的其它信息

  不同的需求不同的技術hibernate之類的ORM帶給我們很多的方便但我們千萬不要認為其是萬金油在影響性能的關鍵地方別忘了我們最基本的數據庫操作


From:http://tw.wingwit.com/Article/program/Java/ky/201311/29194.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.