轉:ibatis的cacheModel

來源:互聯網
上載者:User

cachemodel是ibatis裡面內建的緩衝機制,正確的應用能很好提升我們系統的效能。

使用方法:在sqlmap的設定檔中加入

<cacheModel type="LRU" id="article_cache" readOnly="true" serialize="false">
        <flushInterval hours="24"/>
        <flushOnExecute statement="articleLists.insertArticle"/>
        <property name="cache_size" value="50"/>        
</cacheModel>

在查詢語句中使用緩衝

<select id="getArticles" resultClass="articleList" parameterClass="articleList" cacheModel="article_cache">

先對cachemodel中一些用法進行解釋一下:

type:是緩衝的類型,ibatis中有4種方式,分別為MEMORY、LRU、FIFO、OSCACHE

          MEMORY是記憶體緩衝,和Java記憶體管理機制類似分為[SOFT、WEAK、STRONG]

          LRU是使用最近最少使用原則

          FIFO是使用先進先出策略

          OSCACHE是通過第三方的快取區外掛程式實現

id:是cachemodel的一個標識

readOnly:指緩衝的資料對象是唯讀還是可讀寫,預設唯讀,這裡的唯讀並不是意味著資料對象一旦放入緩衝中就無法再對資料進行修改。而是當資料對象發生變化的時候,如資料對象的某個屬性發生了變化,則此資料對象就將被從緩衝中廢除,下次需要重新從資料庫讀取資料,構造新的資料對象。而readOnly="false"則意味著緩衝中的資料對象可更新.
serialize:只有在readOnly為false的情況下才生效,因為在readOnly為true時,所有資料對象相同,只有可讀寫時,才會出現不同的session擁有不同的資料對象副本。

flushInterval:指定緩衝自動重新整理的時間,可以為hours,minutes,seconds,milliseconds.

flushOnExecute:指定在發生哪些操作時,更新緩衝。

property:不同type的cachemodel有不同的屬性。

----------------------------------------------------------------------------

下面是本人自己做的實驗的一些結果:

(1)當readOnly=true ,serialize=false,只指定insert更新緩衝時,我在update一個article的屬性後,發現之前的相同的查詢條件查詢結果是緩衝的內容,沒取到更新的結果;當我改變查詢條件時,出現了更新的結果。由此可見當readonly=true,查詢條件不變時,即使發生更新,緩衝仍然有效;而查詢條件變更時,緩衝失效,用新的sql去資料庫查詢。當發生insert操作時,不管查詢條件是否變化,都重新去資料庫查詢,緩衝被更新。

(2)當readOnly=false,serialize=false,只指定insert更新緩衝時,update一個article屬性後,緩衝失效,重新去資料庫查詢

綜上來看,對更新比較頻繁的資料,使不使用感覺效率差不多,對更新不是很頻繁的資料,使用緩衝效率還是能提升的!

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.