久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

mybatis補(bǔ)充教程之三:緩存(cache)的使用

 aaie_ 2016-05-21
許多應(yīng)用程序,,為了提高性能而增加緩存, 特別是從數(shù)據(jù)庫中獲取的數(shù)據(jù). 在默認(rèn)情況下,mybatis 的一級緩存是默認(rèn)開啟的,。類似于hibernate, 所謂一級緩存,,也就是基于同一個sqlsession 的查詢語句,即 session 級別的緩存,非全局緩存,,或者非二級緩存.

如果要實(shí)現(xiàn) mybatis 的二級緩存,,一般來說有如下兩種方式:
1. 采用 mybatis 內(nèi)置的 cache 機(jī)制。
2. 采用三方 cache 框架,, 比如ehcache, oscache 等等.

采用 mybatis 內(nèi)置的 cache 機(jī)制,。
在 sql 語句映射文件中加入 <cache /> 語句 , 并且相應(yīng)的 model 類要實(shí)現(xiàn) java Serializable 接口,因為緩存說白了就是序列化與反序列化的過程,,所以需要實(shí)現(xiàn)這個接口. 單純的 <cache /> 表示如下意思:

1.所有在映射文件里的 select 語句都將被緩存,。
2.所有在映射文件里 insert,update 和 delete 語句會清空緩存。
3.緩存使用“最近很少使用”算法來回收
4.緩存不會被設(shè)定的時間所清空,。
5.每個緩存可以存儲 1024 個列表或?qū)ο蟮囊茫ú还懿樵兂鰜淼慕Y(jié)果是什么) ,。
6.緩存將作為“讀/寫”緩存,意味著獲取的對象不是共享的且對調(diào)用者是安全的,。不會有其它的調(diào)用者或線程潛在修改,。
緩存元素的所有特性都可以通過屬性來修改。比如:
程序代碼 程序代碼

<cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true" />


采用 ehcache 來實(shí)現(xiàn) mybatis  的二級緩存

首先需要在 mybatis 的官網(wǎng)上下載相關(guān)jar 包:https://code.google.com/p/mybatis/ 寫文檔的時候下載的是:mybatis-ehcache-1.0.2.zip ,,里面包括了
程序代碼 程序代碼

mybatis-ehcache-1.0.2.jar
ehcache-core-2.6.5.jar
slf4j-api-1.6.1.jar


當(dāng)然,,采用ehcache 就必須在 classpath 下 加入ehcache 的配置文件 ehcache.xml:
程序代碼 程序代碼

<cache name="default"
    maxElementsInMemory="10000"
    eternal="false"
    timeToIdleSeconds="3600"
    timeToLiveSeconds="10"
    overflowToDisk="true"
    diskPersistent="true"
    diskExpiryThreadIntervalSeconds="120"
    maxElementsOnDisk="10000"
/>


那么在 sql 映射文件中要如何配置呢,參考如下:
程序代碼 程序代碼

<cache type="org.mybatis.caches.ehcache.LoggingEhcache" >
        <property name="timeToIdleSeconds" value="3600"/><!--1 hour-->
        <property name="timeToLiveSeconds" value="3600"/><!--1 hour-->
        <property name="maxEntriesLocalHeap" value="1000"/>
        <property name="maxEntriesLocalDisk" value="10000000"/>
        <property name="memoryStoreEvictionPolicy" value="LRU"/>
    </cache>


總結(jié):無論是采用mybatis 自身的cache  還是三方的cache , 這樣的配置,,就是對 所有的select 語句都全局緩存,,但事實(shí)上,并不總是這樣,,比如,,我在這系列教程中第七章中 http://www./article/java/326.htm,自己寫的分頁算法,,就不能用這種情況,。需要禁止掉cache ,所以需要如下方法:
程序代碼 程序代碼

<select id="selectArticleListPage" resultMap="resultUserArticleList" useCache="false">
.......


注意到 useCache="false" 了嗎? 這可以避免使用緩存,。



除非申明,文章均為一號門原創(chuàng),轉(zhuǎn)載請注明本文地址,謝謝!

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多