亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

Mybatis緩存詳解

難度初級
時長 3小時 3分
學習人數
綜合評分8.40
5人評價 查看評價
8.4 內容實用
8.4 簡潔易懂
8.4 邏輯清晰
  • SqlSession繼承路徑


    645523290001149009600540.jpg
    查看全部
  • 緩存比較

    查看全部
    0 采集 收起 來源:課程總結

    2022-10-30


  • Rediscache

    查看全部
  • summary

    查看全部
  • cache

    查看全部

  • Mybatis Cache

    一級緩存特點

    自動啟用

    通過在setting中設置localCacheScope= STATEMENT(默認為SESSION)全局禁用一級緩存

    在Dao接口方法上添加注解:@Options(flushCache=Options.FlushCachePolicy.True),禁用這個方法的一級緩存

    命中原則,同一SqlSession內,以下5個條件組成key,放入緩存中:

    條件一:statementId相同

    條件二:sql上用到的參數要一樣

    條件三:分頁參數要一樣?

    條件四:sql語句的文本要一樣

    條件五:數據庫連接的environment要一樣

    生命周期

    產生:sqlSession執行查詢方法,而不是update等

    銷毀:sqlSession關閉、sqlSession提交、sqlSession回滾、sqlSession執行update(新增、刪除、更新)后底層會執行清除、主動清除

    辟謠:Mybatis 一級緩存臟讀(數據被另外事務修改并提交后,仍會從緩存中讀到舊數據(錯誤),實際是避免了事務不可重復讀問題), Mybatis 一級緩存是在事務的生命周期之內的,在關閉session、執行commit、執行rollback都會清空Mybatis一級緩存。 實際上Mybatis 一級緩存反而避免了數據庫事務中的臟讀(讀未提交)、不可重復讀(讀提交)問題。

    源碼解讀

    代理模式與裝飾模式的區別:代理模式在無參構造方法中確定地new了一個被代理的對象,編譯時已經可以確定;而裝飾模式是通過有參構造方法將被裝飾對象傳入裝飾 類中,能夠在運行時遞歸地被構造。

    設計理念:在一個session內,不過期、不更新、不限制;

    與spring整合時,如果開啟了事務,事務內,Spring通過ThreadLocal始終使用同一個sqlSession,一級緩存生效; 如果沒有開啟事務,每次查詢前會創建一個sqlSession,查詢結束后會關閉sqlSession,所以一級緩存無效;?

    二級緩存特點(跨sqlSession、有臟讀問題,建議直接不用)

    啟用步驟:

    在mybatis.xml中settings標簽下添加;?

    在mapper.xml中mapper標簽下添加:屬性eviction(LRU( 默認)、FIFO、SOFT、WEAK)和size(實例數,默認不限制),通過這兩個屬性可自定義二級緩存的清除策略

    在mapper.xml中mapper標簽下添加:屬性type,通過設置type可以指定使用的Cache對象,后面自定義緩存中有用到

    默認地,select標簽flushCache="false" useCache="true",其他標簽flushCache="true" entity類實現Serializable標記類;?

    命中原則,同一SqlSessionFactory內,以下5個條件組成key,放入緩存中:?

    條件一:statementId相同?

    條件二:sql上用到的參數要一樣?

    條件三:分頁參數要一樣?

    條件四:sql語句的文本要一樣?

    條件五:數據庫連接的environment一樣?

    生命周期?

    sqlSession關閉-創建二級緩存、?

    sqlSession提交-創建二級緩存、

    sqlSession回滾、

    sqlSession執行update(新增、刪除、更新)、銷毀二級緩存唯方法:同一mapper.xml執行update(新增、刪除、更新)注意:同一個表的操作要放在同一個mapper下

    sqlSession主動清除

    產生:1.能產生一級緩存;2.對sqlSession進行關閉或提交;?

    銷毀:

    源碼解讀 (MapperBuilderAssistant.class->useNewCache、XMLMapperBuilder.class->cacheElement)

    緩存是存在Configuration下并且緩存使用的是PerpetualCache(非分布式),而Configuration又是在DefaultSqlSessionFactory下,所以不同的SqlSessionFactory下的緩存是相互隔離的;

    通過自定義Redis緩存(實現Cache),將mapper下的cache指定type為自定義的類,就可以實現緩跨DefaultSqlSessionFactory;

    查看全部
    0 采集 收起 來源:課程介紹

    2022-04-25

  • 課程目錄

    查看全部
    0 采集 收起 來源:課程介紹

    2022-04-07

  • mybatis一級緩存類圖。


    61c7dd600001027409600540.jpg
    查看全部
  • mhsql一級緩存類圖


    61c7dd390001214109600540.jpg
    查看全部
  • 哈哈哈哈

    查看全部
    0 采集 收起 來源:課程介紹

    2021-12-14

  • mybatis一二級緩存


    61212a1600012c7512800720.jpg
    查看全部
    0 采集 收起 來源:課程總結

    2021-08-22

  • MyBatis

    查看全部
  • MyBatis

    查看全部
  • MyBatis


    查看全部
  • MyBatis

    查看全部
    0 采集 收起 來源:課程介紹

    2021-08-12

  • http://img1.sycdn.imooc.com//60bd7cb20001a66308220481.jpg

    11

    查看全部
  • 二級緩存的命中原則

    http://img1.sycdn.imooc.com//5fe176a5000139d712240683.jpg

    查看全部

  • 1、修改配置文件

    2、修改mapper文件

    3、實體類實現序列化接口

    http://img1.sycdn.imooc.com//5fe173c80001baf412020666.jpg


    查看全部
  • MyBatis與Spring繼承:一級緩存

    http://img1.sycdn.imooc.com//5fe16937000100e912660697.jpg

    查看全部
  • 一級緩存的存儲

    http://img1.sycdn.imooc.com//5fe158a50001e03919201080.jpg

    查看全部
  • MyBatis是怎么判斷某兩次查詢是完全相同的查詢?

    條件一:要求查詢的StatementId必須相同,否則無法命中緩存,即使兩個查詢語句、參數等完全一樣。

    條件二:要求傳遞給SQL的查詢參數必須相同,否則無法命中緩存

    條件三:要求分頁參數必須相同,否則無法命中緩存。緩存粒度是整個分頁查詢結果,而不是結果中的每個對象。

    條件四:要求傳遞給JDBC的SQL必須完全相同。

    條件五:要求執行環境必須相同。

    http://img1.sycdn.imooc.com//5fe04b930001874810590518.jpg

    查看全部
  • http://img1.sycdn.imooc.com//5fda0e0f0001fe6d10840589.jpgmybatis緩存比較

    查看全部
    0 采集 收起 來源:課程總結

    2020-12-16

  • size引用數目

    緩存引用的最大數目,默認是1024

    當緩存引用達到最大數目時,按照eviction設定的策略執行清除。

    查看全部
  • eviction清除策略:

    LRU:最近最少使用:移除最長時間不被使用的對象;(LinkHashMap)

    FIFO:先進先出:按對象進入緩存的順序來移除它們;(LinkedList)

    SOFT:軟引用:基于GC和軟引用規則移除對象;(SoftReference)

    WEAK:弱引用: 基于GC和弱引用規則移除對象;(WeakReference)

    查看全部
首頁上一頁1234567下一頁尾頁

舉報

0/150
提交
取消
課程須知
1. 需要懂得java語言 2. 需要懂得xml語法規則 3. 需要懂得sql語句的使用,能否使用sql完成基本的CRUD操作 4. 需要懂得mybatis的基本使用方法,能夠使用mybaits完成基本的CRUD操作 5. 需要懂得log4j或其他日志框架的使用方法
老師告訴你能學到什么?
1、mybatis一級緩存的原理及使用 2、mybatis二級緩存的原理及使用 3、mybatis自定義緩存的原理及使用

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!