亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MyBatis關于二級緩存問題

 更新時間:2017年03月23日 17:02:08   作者:wanna  
本篇文章主要介紹了MyBatis關于二級緩存問題,二級緩存是Mapper級別的緩存,多個sqlSession操作同一個Mapper,其二級緩存是可以共享的。

MyBatis提供一級緩存和二級緩存,其中一級緩存是sqlSession級別的緩存,不同的sqlSession之間的緩存互不影響。二級緩存是Mapper級別的緩存,多個sqlSession操作同一個Mapper,其二級緩存是可以共享的。

MyBatis有多種二級緩存方案可供選擇。其中對Memcached的支持較為成熟,現(xiàn)以Memcached為例介紹與spring項目的集成。

使用配置

配置pom.xml,添加依賴。

<dependencies>
 ...
 <dependency>
  <groupId>org.mybatis.caches</groupId>
  <artifactId>mybatis-memcached</artifactId>
  <version>1.0.0</version>
 </dependency>
 ...
</dependencies>

全局開關

<settings>
  <setting name="cacheEnabled" value="true"/>
</settings>

配置需要緩存的mapper.xml

二級緩存是Mapper級別的,可以針對具體的mapper.xml開啟二級緩存。

<mapper namespace="org.acme.FooMapper">
 <cache type="org.mybatis.caches.memcached.MemcachedCache" />
</mapper>

開啟后,則mapper中所有的select語句默認都將被緩存,此命名空間下所有insert、update、delete語句將會導致空間下的緩存被清空。

可以針對具體某條語句禁用緩存。

 <select id="retObj" resultMap="results" useCache="false" >
   select id, name, sex from employee  
 </select>

也可針對某條語句觸發(fā)刷新動作(默認對應所有插入、更新、刪除語句)。

 <select id="retObj" resultMap="results" flushCache="true" >
   select id, name, sex from employee  
 </select>

配置參數(shù)在memcached.properties中設置,如果缺失則使用缺省設置。

以下是配置參數(shù):

如果需要記錄cache操作日志,可由如下配置實現(xiàn)

<mapper namespace="org.acme.FooMapper">
 <cache type="org.mybatis.caches.memcached.LoggingMemcachedCache" />
 ...
</mapper>

注意事項

緩存在Memcached中的類需要實現(xiàn)Serializable接口,否則會報錯java.io.NotSerializableException。

二級緩存應用場景

  1. 對查詢頻率高,變化頻率低的數(shù)據(jù)建議使用二級緩存。
  2. 對于訪問多的查詢請求且用戶對查詢結果實時性要求不高,此時可采用mybatis二級緩存技術降低數(shù)據(jù)庫訪問量,提高訪問速度,業(yè)務場景比如:耗時較高的統(tǒng)計分析sql、電話賬單查詢sql等。

實現(xiàn)方法如下:

通過設置刷新間隔時間,由mybatis每隔一段時間自動清空緩存,根據(jù)數(shù)據(jù)變化頻率設置緩存刷新間隔flushInterval,比如設置為30分鐘、60分鐘、24小時等,根據(jù)需求而定。

mybatis局限性

mybatis二級緩存對細粒度的數(shù)據(jù)級別的緩存實現(xiàn)不好。

比如如下需求:對商品信息進行緩存,由于商品信息查詢訪問量大,但是要求用戶每次都能查詢最新的商品信息,此時如果使用mybatis的二級緩存就無法實現(xiàn)當一個商品變化時只刷新該商品的緩存信息而不刷新其它商品的信息,因為mybaits的二級緩存區(qū)域以mapper為單位劃分,當一個商品信息變化會將所有商品信息的緩存數(shù)據(jù)全部清空。解決此類問題需要在業(yè)務層根據(jù)需求對數(shù)據(jù)有針對性緩存。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • mybatis 新增返回id的實現(xiàn)

    mybatis 新增返回id的實現(xiàn)

    Mybatis插入數(shù)據(jù)時,可以通過兩種方式返回生成的ID,兩種方式都需要在實體類中提供userId的getter和setter方法,本文就詳細的介紹一下這兩種方法,感興趣的可以了解一下
    2024-09-09
  • 深入理解java中的重載和覆蓋

    深入理解java中的重載和覆蓋

    下面小編就為大家?guī)硪黄钊肜斫鈐ava中的重載和覆蓋。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • Java實現(xiàn)手寫線程池實例并測試詳解

    Java實現(xiàn)手寫線程池實例并測試詳解

    這篇文章主要來模擬一下線程池和工作隊列的流程,以及編寫代碼和測試類進行測試。文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2023-02-02
  • MyBatis-Plus+達夢數(shù)據(jù)庫實現(xiàn)高效數(shù)據(jù)持久化的示例

    MyBatis-Plus+達夢數(shù)據(jù)庫實現(xiàn)高效數(shù)據(jù)持久化的示例

    這篇文章主要介紹了MyBatis-Plus和達夢數(shù)據(jù)庫實現(xiàn)高效數(shù)據(jù)持久化,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-08-08
  • Java計算兩個日期時間之間的天數(shù)最簡方法

    Java計算兩個日期時間之間的天數(shù)最簡方法

    這篇文章給大家分享了Java計算兩個日期時間之間的天數(shù)最簡單的實現(xiàn)方法,有興趣的朋友可以參考學習下。
    2018-07-07
  • Spring事務的失效場景你知道多少

    Spring事務的失效場景你知道多少

    這篇文章主要為大家詳細介紹了Spring事務的失效場景,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Java實現(xiàn)byte[]轉List的示例代碼

    Java實現(xiàn)byte[]轉List的示例代碼

    byte,即字節(jié),由8位的二進制組成。在Java中,byte類型的數(shù)據(jù)是8位帶符號的二進制數(shù)。List?是一個接口,它繼承于Collection的接口。它代表著有序的隊列。本文將介紹如何通過java實現(xiàn)byte[]轉List,需要的可以參考一下
    2022-01-01
  • JVM內(nèi)存結構劃分實例解析

    JVM內(nèi)存結構劃分實例解析

    這篇文章主要介紹了JVM內(nèi)存結構劃分實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • java中使用Files.readLines()處理文本中行數(shù)據(jù)方式

    java中使用Files.readLines()處理文本中行數(shù)據(jù)方式

    這篇文章主要介紹了java中使用Files.readLines()處理文本中行數(shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • SpringBoot整合Graylog做日志收集實現(xiàn)過程

    SpringBoot整合Graylog做日志收集實現(xiàn)過程

    這篇文章主要為大家介紹了SpringBoot整合Graylog做日志收集實現(xiàn)過程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12

最新評論