国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - MyBatis緩存實現原理及代碼實例解析

MyBatis緩存實現原理及代碼實例解析

2020-08-28 00:13IT-執念 Java教程

這篇文章主要介紹了MyBatis緩存實現原理及代碼實例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

一、一級緩存(本地緩存)

  sqlSession級別的緩存。一級緩存是一直開啟的;SqlSession級別的一個Map與數據庫同一次會話期間查詢到的數據會放在本地緩存中。以后如果需要獲取相同的數據,直接從緩存中拿,沒必要再去查詢數據庫;

  一級緩存失效情況(沒有使用到當前一級緩存的情況,效果就是,還需要再向數據庫發出查詢):

  1、sqlSession不同

  2、sqlSession相同,查詢條件不同。(當前一級緩存中還沒有這個數據)

  3、sqlSession相同,兩次查詢之間執行了增刪改操作(這次增刪改可能對當前數據有影響)

  4、sqlSession相同,手動清除了一級緩存。

二、二級緩存(全局緩存)

  基本namespace級別的緩存:一個namespace對應一個二級緩存:

  工作機制:

  1、一個會話,查詢一條數據,這個數據就會被放在當前會話的一級緩存中:

  2、如果會話關閉:一級會話中的緩存會被保存到二級緩存中;新的會話查詢信息,就可以參照二級緩存中的內容。

  3、不同namespace查出的數據會放在自己對應的緩存中(map)

    效果:數據會從二級緩存中獲取,查出的數據會默認先放在一級緩存中,只有會話提交或者關閉以后,一級緩存中的數據才會轉移到二級緩存中

  4、如何開啟二級緩存:

    ①開啟全局二級緩存配置:    

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

    ②去mapper.xml中配置使用二級緩存:

<cache></cache>

    ③對應的POJO實現序列化接口

  5、和緩存有關的設置屬性

    ①cacheEnabled=true:false:關閉緩存(二級緩存關閉)(一級緩存一直可用的)

    ②每個select標簽都有useCache="true":false:不使用緩存(一級緩存依然使用,二級緩存不使用)

    ③ 每個增刪改標簽的:flushCache="true":(一級二級都會清除)

    ④sqlSession.clearCache();只是清楚當前session的一級緩存;

    ⑤全局配置localCacheScope:

      本地緩存作用域:(一級緩存SESSION);當前會話的所有數據保存在會話緩存中;

      STATEMENT:可以禁用一級緩存。

  6、第三方緩存整合

    ①導入第三方緩存包即可;

    ②導入與第三方緩存整合的適配包;官方有;

    ③mapper.xml中使用自定義緩存

    使用Ehcache緩存框架

<cache type="org.mybatis.caches.ehcache.EhcacheCache"></cache>

  7、cache標簽配置參數:   

<cache eviction="FIFO" flushInterval="60000" readOnly="false" size="1024"></cache>

  eviction:緩存的回收策略:

    • LRU – 最近最少使用的:移除最長時間不被使用的對象。
    • FIFO – 先進先出:按對象進入緩存的順序來移除它們。
    • SOFT – 軟引用:移除基于垃圾回收器狀態和軟引用規則的對象。
    • WEAK – 弱引用:更積極地移除基于垃圾收集器狀態和弱引用規則的對象。
    • 默認的是 LRU。

  flushInterval:緩存刷新間隔

    緩存多長時間清空一次,默認不清空,設置一個毫秒值。

  readOnly:是否只讀:

    true:只讀;mybatis認為所有從緩存中獲取數據的操作都是只讀操作,不會修改數據。mybatis為了加快獲取速度,直接就會將數據在緩存中的引用交給用戶。不安全,速度快。

    false:非只讀:mybatis覺得獲取的數據可能會被修改。mybatis會利用序列化&反序列的技術克隆一份新的數據給你。安全,速度慢

  size:緩存存放多少元素;

  type="":指定自定義緩存的全類名;實現Cache接口即可;

三、ehcache.xml配置

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="UTF-8"?>
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:noNamespaceSchemaLocation="../config/ehcache.xsd">
 <!-- 磁盤保存路徑 -->
 <diskStore path="java.io.tmpdir"/>
 
 <defaultCache
  maxElementsInMemory="1"
  maxElementsOnDisk="10000000"
  eternal="false"
  overflowToDisk="true"
  timeToIdleSeconds="120"
  timeToLiveSeconds="120"
  diskExpiryThreadIntervalSeconds="120"
  memoryStoreEvictionPolicy="LRU">
 </defaultCache>
</ehcache>

屬性說明:
l diskStore:指定數據在磁盤中的存儲位置。
l defaultCache:當借助CacheManager.add("demoCache")創建Cache時,EhCache便會采用<defalutCache/>指定的的管理策略

以下屬性是必須的:
l maxElementsInMemory - 在內存中緩存的element的最大數目
l maxElementsOnDisk - 在磁盤上緩存的element的最大數目,若是0表示無窮大
l eternal - 設定緩存的elements是否永遠不過期。如果為true,則緩存的數據始終有效,如果為false那么還要根據timeToIdleSeconds,timeToLiveSeconds判斷
l overflowToDisk - 設定當內存緩存溢出的時候是否將過期的element緩存到磁盤上

以下屬性是可選的:
l timeToIdleSeconds - 當緩存在EhCache中的數據前后兩次訪問的時間超過timeToIdleSeconds的屬性取值時,這些數據便會刪除,默認值是0,也就是可閑置時間無窮大
l timeToLiveSeconds - 緩存element的有效生命期,默認是0.,也就是element存活時間無窮大
diskSpoolBufferSizeMB 這個參數設置DiskStore(磁盤緩存)的緩存區大小.默認是30MB.每個Cache都應該有自己的一個緩沖區.
l diskPersistent - 在VM重啟的時候是否啟用磁盤保存EhCache中的數據,默認是false。
l diskExpiryThreadIntervalSeconds - 磁盤緩存的清理線程運行間隔,默認是120秒。每個120s,相應的線程會進行一次EhCache中數據的清理工作
l memoryStoreEvictionPolicy - 當內存緩存達到最大,有新的element加入的時候, 移除緩存中element的策略。默認是LRU(最近最少使用),可選的有LFU(最不常使用)和FIFO(先進先出)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://www.cnblogs.com/zhaobingqing/p/7109950.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 五月天婷婷激情 | 久久成人综合 | 久久免费一区 | 久久99精品国产自在现线 | 天天干天天干天天干天天射 | 国产黄色av | 久久中文字幕在线观看 | 国产中文字幕一区 | 伊大人久久香线焦宗合一75大 | 欧美一区二区三区视频在线 | 欧美电影免费网站 | 日韩中文字幕在线视频 | 久久久久av69精品 | 欧美一区二区三区精品 | 精品欧美一区二区三区久久久 | 日韩免费电影 | 欧美a级成人淫片免费看 | 久久综合欧美 | 国产精品久久久久久婷婷天堂 | 国产精品免费网址 | 91精品国产一区二区三区四区在线 | 日韩视频精品在线观看 | 午夜小电影 | 四季久久免费一区二区三区四区 | 欧美在线小视频 | 日韩在线观看中文字幕 | 午夜精品久久久久久久久久久久 | 国产精品一区二区免费 | 亚洲精品久久久久中文字幕欢迎你 | 精品亚洲一区二区 | 亚洲一区中文字幕 | 国产一区二区综合 | 午夜精品网站 | 日韩一区二区精品视频 | 国产精品日产欧美久久久久 | 黄片毛片毛片毛片 | 一本大道av日日躁夜夜躁 | 中文字幕av一区二区三区免费看 | 福利视频二区 | 久久久久无码国产精品一区 | 亚洲成人激情在线观看 |