關於iBatis的緩衝使用

來源:互聯網
上載者:User

在你的xml設定檔中,每一個 cacheModel 元素,如下
  <cacheModel id="oneday_cache" type="LRU" readOnly="false" serialize="true">
      <flushInterval hours="24"/>
      <flushOnExecute statement="updateMyDate"/>
      <property name="size" value="200"/>
   </cacheModel> 
 1 屬性readOnly如果不寫,預設是true,這時的緩衝效果無疑最好,因為系統不需要考慮更新操作引起緩衝與實際資料不一致的問題,唯讀緩衝的例子是固化到資料庫中的一些配置參數表。但是,通常我們想緩衝的資料是需要增刪改的,這時務必記得要加上     readOnly = "false";
 2 屬性serialize,如果不寫,預設為false, 將它設為true,可以提高整體應用(而不僅僅是每個Session)的效能。 這種緩衝為每一個Session返回緩衝對象不同的執行個體(複本)。因此每一個Session都可以安全修改返回的對象.   注意,此時readOnly必須為false。
     如果你把它設為 true ,記得檢查兩件事,一件事是緩衝中存放的對象(你想查詢的POJO)必須是可序列化的, 即實現Serializable介面。如果你有一個複雜物件屬性,它也必須滿足這個規則,你的整個對象樹必須是可序列化的。
     另一件事是關閉sql-map-config中的消極式載入屬性,即lazyload=false,原因是,它使用了動態代理機制, 那個代理對象並不是Serializable的。
  
   緩衝類型的最佳適應情形:


   MEMORY    沒有統一的對象重用模式的應用,或記憶體不足的應用。
   LRU       在較長的期間內,使用者經常使用某些特定對象。
   FIFO      使用者在短時間內持續引用特定的查詢,而後很可能不再使用。
  
   根據個人實踐,記憶體充足時使用LRU,否則使用MEMORY(WEAK)通常能獲得較好的效果。

作者Blog:http://blog.csdn.net/_chage/

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.