Mybatis一級和二級緩存

Mybatis一級和二級緩存

正如大多數持久層框架一樣,MyBatis 同樣提供了一級緩存和二級緩存的支持

1.Mybatis一級緩存爲sqlSession級別的緩存 默認開啓 相同的sqlsession對象 查詢相同條件的結果時 存在一級緩存只會查詢一次,sqlSession關閉後緩存失效 調用cleanCache後 緩存被清除,執行過增刪改後緩存會被清除
如果緩存中有數據就不用從數據庫中獲取,大大提高系統性能。

2.二級緩存爲sqlSessionFactory級別的緩存 默認不開啓
開啓方式爲如下:

  <settings>
    <setting name="cacheEnabled" value="true"/>
 </settings>
  在映射文件中添加cache標籤 默認使用LRU算法 也可以不適用默認  的配置
 <cache eviction="FIFO"  //回收策略爲先進先出
  flushInterval="60000" //自動刷新時間60s
  size=“512” //最多緩存512個引用對象 readOnly="true"/> //只讀

3.
* 一級緩存 同一個session對象針對同一份數據的查詢 產生的緩存
* 第一次查詢時 調用數據 獲取數據後
* 通過session設置到一級緩存中
* 第二次查詢時 通過session一級緩存判斷是否存在 相同主鍵的數據值
* 如果存在 直接返回引用 否則查詢數據庫

  • 二級緩存 同一個sessionFactory下的不同session 可以共享數據

4.mybatis默認緩存類 FifoCache
內存數據不足時 需要一種機制 保證 內存不出現溢出 需要將舊的數據清除 最 先加入的數據 最先清除
LRU 最近使用次數最少的 被優先清除
LFU 最近一段時間內使用次數最少

5.MyBatis會在一次會話的表示—-一個SqlSession對象中創建一個本地緩存(local cache),對於每一次查詢,都會嘗試根據查詢的條件去本地緩存中查找是否在緩存中,如果在緩存中,就直接從緩存中取出,然後返回給用戶;否則,從數據庫讀取數據,將查詢結果存入緩存並返回給用戶。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章