<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    JAVA—咖啡館

    ——?dú)g迎訪問(wèn)rogerfan的博客,常來(lái)《JAVA——咖啡館》坐坐,喝杯濃香的咖啡,彼此探討一下JAVA技術(shù),交流工作經(jīng)驗(yàn),分享JAVA帶來(lái)的快樂(lè)!本網(wǎng)站部分轉(zhuǎn)載文章,如果有版權(quán)問(wèn)題請(qǐng)與我聯(lián)系。

    BlogJava 首頁(yè) 新隨筆 聯(lián)系 聚合 管理
      447 Posts :: 145 Stories :: 368 Comments :: 0 Trackbacks

      最近開始重構(gòu)公司一套手機(jī)論壇系統(tǒng)(為什么我不說(shuō)wap論壇,是因?yàn)樾枰槍?duì)不同的手機(jī)瀏覽器,實(shí)現(xiàn)自動(dòng)適配成wap、html以及wap2.0版本的頁(yè)面)。原系統(tǒng)存在架構(gòu)層次不清晰(表現(xiàn)層全jsp,直接配合數(shù)據(jù)層獲取數(shù)據(jù)),訪問(wèn)速度慢的問(wèn)題。其使用的OR映射框架是Hibernate,鑒于Hibernate的一些不滿足需要情況下,我們?cè)谥貥?gòu)的時(shí)候換成了iBatis,為了加快訪問(wèn)速度,采用了iBatis的緩存技術(shù)。

          iBatis的緩存配置比較簡(jiǎn)單易懂,以我使用的iBatis2.3為例,做以下配置即可實(shí)現(xiàn)對(duì)某些查詢進(jìn)行緩存:

          1、在sqlMap文件中加入cacheModel的配置:

        <cacheModel id="model-cache" type="MEMORY" >

         <flushInterval seconds="60"/>
         <flushOnExecute statement="insertProduct"/>
         <flushOnExecute statement="updateProduct"/>
         <flushOnExecute statement="deleteProduct"/>

         <property name="size" value="1000" />
        </cacheModel>

          這個(gè)地方要注意的是,如果在sqlMapConfig里面設(shè)置了useStatementNamespaces="true",那么上面的flushOnExecute中的statement里面需要帶上namespace,如<flushOnExecute statement="Product.insertProduct"/>,如果useStatementNamespaces="false",則可以直接按上面的寫。

         2、配置需要進(jìn)行cache的sql statment:

          <statement id="getProductList" parameterClass="int" cacheModel="model-cache">
            select * from PRODUCT where PRD_CAT_ID = #value#
          </statement>

         配置好這兩步就可實(shí)現(xiàn)iBatis的緩存了,下面解釋一下含義:

         1步中,cacheModel的id屬性用于后面的statement引用,type屬性標(biāo)識(shí)采用何種cache方式,可選的有:

     “MEMORY” (com.ibatis.db.sqlmap.cache.memory.MemoryCacheController) 。MEMORY cache 實(shí)現(xiàn)使用 reference 類型來(lái)管理 cache 的行為。垃圾收集器可以根據(jù) reference類型判斷是否要回收 cache 中的數(shù)據(jù)。MEMORY實(shí)現(xiàn)適用于沒(méi)有統(tǒng)一的對(duì)象重用模式的應(yīng)用,或內(nèi)存不足的應(yīng)用。
     “LRU” (com.ibatis.db.sqlmap.cache.lru.LruCacheController) 。LRU Cache 實(shí)現(xiàn)用“近期最少使用”原則來(lái)確定如何從 Cache 中清除對(duì)象。當(dāng) Cache溢出時(shí),最近最少使用的對(duì)象將被從 Cache 中清除。使用這種方法,如果一個(gè)特定的對(duì)象總是被使用,它將保留在 Cache 中,而且被清除的可能性最小。對(duì)于在較長(zhǎng)的期間內(nèi),某些用戶經(jīng)常使用某些特定對(duì)象的情況(例如,在 PaginatedList 和常用的查詢關(guān)鍵字結(jié)果集中翻頁(yè)) ,LRU Cache 是一個(gè)不錯(cuò)的選擇。  
     “FIFO” (com.ibatis.db.sqlmap.cache.fifo.FifoCacheController) 。FIFO Cache 實(shí)現(xiàn)用“先進(jìn)先出”原則來(lái)確定如何從 Cache 中清除對(duì)象。當(dāng) Cache 溢出時(shí),最先進(jìn)入 Cache 的對(duì)象將從 Cache 中清除。對(duì)于短時(shí)間內(nèi)持續(xù)引用特定的查詢而后很可能不再使用的情況,F(xiàn)IFO Cache 是很好的選擇。
     “OSCACHE” (com.ibatis.db.sqlmap.cache.oscache.OSCacheController)  。OSCACHE Cache 實(shí)現(xiàn)是OSCache2.0緩存引擎的一個(gè) Plugin。它具有高度的可配置性,分布式,高度的靈活性。
           flushInterval 屬性是配置自動(dòng)更新緩存的周期,可以是hours,minutes,seconds或milliseconds。這一點(diǎn)我測(cè)試了一下,設(shè)置的60秒更新,通過(guò)觀察日志,在60秒內(nèi),第一次查詢數(shù)據(jù)庫(kù),之后iBatis會(huì)對(duì)同樣的sql查詢直接返回。超過(guò)60秒后的第一次查詢,又會(huì)執(zhí)行一次查詢。這樣看了,這個(gè)更新的周期可理解為第一次同樣的查詢可維持在cache中的時(shí)長(zhǎng),超過(guò)這個(gè)時(shí)長(zhǎng)的第一次查詢會(huì)觸發(fā)實(shí)際的數(shù)據(jù)庫(kù)操作。

          flushOnExecute這是標(biāo)識(shí)什么時(shí)候觸發(fā)更新,statement的名字就是后面的statement的id。

          statement節(jié)中設(shè)置了cacheModel,就會(huì)把這個(gè)sql跟cache關(guān)聯(lián)起來(lái)。

          是不是很簡(jiǎn)單呢,這里面我覺(jué)得比較關(guān)鍵的地方就是cacheModel的type選擇,一般來(lái)說(shuō)用memory就可以了,但一些特殊的應(yīng)用,需要根據(jù)情況需要配置不同的更適合的cache,以進(jìn)一步提高查詢效率。


    本文來(lái)自CSDN博客,轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/paulluo0739/archive/2009/06/10/4257144.aspx

    posted on 2010-06-29 21:55 rogerfan 閱讀(915) 評(píng)論(0)  編輯  收藏 所屬分類: 【開源技術(shù)】
    主站蜘蛛池模板: 最近最新中文字幕完整版免费高清| 免费观看激色视频网站bd| 成年性生交大片免费看| 亚洲αv久久久噜噜噜噜噜| 特a级免费高清黄色片| 亚洲国产av无码精品| 免费无遮挡无遮羞在线看| 亚洲视频人成在线播放| 抽搐一进一出gif免费视频| 久久九九亚洲精品| 91在线老王精品免费播放| 亚洲欧洲国产综合| 国外成人免费高清激情视频| 含羞草国产亚洲精品岁国产精品| 国产精品极品美女自在线观看免费 | 一个人看的在线免费视频| 亚洲成网777777国产精品| 国产免费一区二区三区免费视频| 91福利免费视频| 亚洲国产最大av| 中文字幕影片免费在线观看| 亚洲av乱码一区二区三区按摩| 一区二区免费视频| 亚洲国产亚洲片在线观看播放 | 亚洲四虎永久在线播放| 美女视频黄的全免费视频网站| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 亚洲AV永久无码精品一百度影院| 亚洲日本一线产区和二线 | 亚洲综合伊人久久综合| 97av免费视频| 亚洲av中文无码乱人伦在线观看 | 国产亚洲成av片在线观看| 老司机69精品成免费视频| 国产成人精品日本亚洲专| 亚洲国产精品日韩| 91成年人免费视频| 一个人免费观看www视频| 亚洲人成激情在线播放| 亚洲成年看片在线观看| 妻子5免费完整高清电视|