您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“java應(yīng)用開發(fā)中MyBayis緩存的示例分析”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“java應(yīng)用開發(fā)中MyBayis緩存的示例分析”這篇文章吧。
使?緩存可以減少 Java 應(yīng)?與數(shù)據(jù)庫的交互次數(shù),從而提升程序的運行效率。?如查詢出 id = 1 的對象,第?次查詢出之后會自動將該對象保存到緩存中,當(dāng)下?次查詢時,直接從緩存中取出對象即可, 無需再次訪問數(shù)據(jù)庫。
操作數(shù)據(jù)庫時需要創(chuàng)建 SqlSession 對象,在對象中有?個 HashMap ?于存儲緩存數(shù)據(jù),不同的 SqlSession 之間緩存數(shù)據(jù)區(qū)域是互不影響的。 ?級緩存的作用域是 SqlSession 范圍的,當(dāng)在同?個 SqlSession 中執(zhí)?兩次相同的 SQL 語句事,第? 次執(zhí)行完畢會將結(jié)果保存到緩存中,第?次查詢時直接從緩存中獲取。 需要注意的是,如果 SqlSession 執(zhí)行了 DML 操作(insert、update、delete),MyBatis 必須將緩存清空以保證數(shù)據(jù)的準(zhǔn)確性。
使??級緩存時,多個 SqlSession 使?同?個 Mapper 的 SQL 語句操作數(shù)據(jù)庫,得到的數(shù)據(jù)會存在? 級緩存區(qū),同樣是使? HashMap 進(jìn)?數(shù)據(jù)存儲,相?較于?級緩存,?級緩存的范圍更?,多個 SqlSession 可以共??級緩存,?級緩存是跨 SqlSession 的。 ?級緩存是多個 SqlSession 共享的,其作?域是 Mapper 的同?個 namespace,不同的 SqlSession 兩次執(zhí)?相同的 namespace 下的 SQL 語句,參數(shù)也相等,則第?次執(zhí)?成功之后會將數(shù)據(jù)保存到?級 緩存中,第?次可直接從?級緩存中取出數(shù)據(jù)。
settings> <!-- 打印SQL--> <setting name="logImpl" value="STDOUT_LOGGING" /> <!-- 開啟延遲加載 --> <setting name="lazyLoadingEnabled" value="true"/> <!-- 開啟?級緩存 --> <setting name="cacheEnabled" value="true"/> </settings>
<cache></cache>
@Data @AllArgsConstructor @NoArgsConstructor public class Account implements Serializable { private long id; private String username; private String password; private int age; }
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-ehcache</artifactId> <version>1.0.0</version> </dependency> <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache-core</artifactId> <version>2.4.3</version> </dependency>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd"> <diskStore/> <defaultCache maxElementsInMemory="1000" maxElementsOnDisk="10000000" eternal="false" overflowToDisk="false" timeToIdleSeconds="120" timeToLiveSeconds="120" diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU"> </defaultCache> </ehcache>
<settings> <!-- 打印SQL--> <setting name="logImpl" value="STDOUT_LOGGING" /> <!-- 開啟延遲加載 --> <setting name="lazyLoadingEnabled" value="true"/> <!-- 開啟?級緩存 --> <setting name="cacheEnabled" value="true"/> </settings>
<cache type="org.mybatis.caches.ehcache.EhcacheCache"> <!-- 緩存創(chuàng)建之后,最后?次訪問緩存的時間?緩存失效的時間間隔 --> <property name="timeToIdleSeconds" value="3600"/> <!-- 緩存?創(chuàng)建時間起?失效的時間間隔 --> <property name="timeToLiveSeconds" value="3600"/> <!-- 緩存回收策略,LRU表示移除近期使?最少的對象 --> <property name="memoryStoreEvictionPolicy" value="LRU"/> </cache>
以上是“java應(yīng)用開發(fā)中MyBayis緩存的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。