Java的MyBatis框架中XML映照緩存的應用教程。本站提示廣大學習愛好者:(Java的MyBatis框架中XML映照緩存的應用教程)文章只能為提供參考,不一定能成為您想要的結果。以下是Java的MyBatis框架中XML映照緩存的應用教程正文
MyBatis包括一個異常壯大的查詢緩存特征,它可以異常便利地設置裝備擺設和定制。默許情形下是沒有開啟緩存的,要開啟二級緩存,你須要在你的SQL映照文件中添加一行:
<cache/>
字面上看就是如許。這個簡略語句的後果以下:
1.映照語句文件中的一切select語句將會被緩存。
2.映照語句文件中的一切insert,update和delete語句會刷新緩存。
3.緩存會應用Least Recently Used(LRU,比來起碼應用的)算法來發出。
4.依據時光表(好比 no Flush Interval,沒有刷新距離),緩存不會以任什麼時候間次序來刷新。
5.緩存會存儲列表聚集或對象(不管查詢辦法前往甚麼)的1024個援用。
6.緩存會被視為是 read/write(可讀/可寫)的緩存,意味著對象檢索不是同享的,並且可以平安地被挪用者修正,而不攪擾其他挪用者或線程所做的潛伏修正。
一切的這些屬性都可以經由過程緩存元素的屬性來修正。好比:
<cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/>
這個更高等的設置裝備擺設創立了一個FIFO緩存,並每隔60秒刷新,存儲成果對象或列表的512個援用,並且前往的對象被以為是只讀的,是以在分歧線程中的挪用者之間修正它們會招致抵觸。
可用的發出戰略(eviction)有:
默許的是 LRU。
flushInterval(刷新距離)可以被設置為隨意率性的正整數,並且它們代表一個公道的毫秒情勢的時光段。默許情形是不設置,也就是沒有刷新距離,緩存僅僅挪用語句時刷新。
size(援用數量)可以被設置為隨意率性正整數,要記住你緩存的對象數量和你運轉情況的可用內存資本數量。默許值1024。
readOnly(只讀)屬性可以被設置為 true 或 false。只讀的緩存會給一切挪用者前往緩存對象的雷同實例。是以這些對象不克不及被修正。這供給了很主要的機能優勢。可讀寫的緩存會前往緩存對象的拷貝(經由過程序列化)。這會慢一些,然則平安,是以默許是false。
應用自界說緩存
除這些自界說緩存的方法,你也能夠經由過程完成你本身的緩存或為其他第三方緩存計劃創立適配器來完整籠罩緩存行動。
<cache type=”com.domain.something.MyCustomCache”/>
這個示例展現了若何應用一個自界說的緩存完成。type 屬性指定的類必需完成org.mybatis.cache.Cache 接口。這個接口是 MyBatis 框架中許多龐雜的接口之一,然則簡略給定它做甚麼就行。
public interface Cache { String getId(); int getSize(); void putObject(Object key, Object value); Object getObject(Object key); boolean hasKey(Object key); Object removeObject(Object key); void clear(); ReadWriteLock getReadWriteLock(); }
參照緩存
或許未來的某個時刻,你會想在定名空間中同享雷同的緩存設置裝備擺設和實例。在如許的情形下你可使用 cache-ref 元從來援用別的一個緩存。
<cache-ref namespace=”com.someone.application.data.SomeMapper”/>