<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                持久層框架中的重要機制。 一級緩存(本地緩存): 同一個數據庫會話期間查詢到的數據會放在本地緩存中。 默認情況下只會開啟一級緩存(SqlSession級別緩存,也叫本地緩存) 重復調用兩次查詢,只會發送一次sql,拿到的也是同一個實體類對象。 一級緩存是一直開啟的。 一級緩存失效的四種情況: 1.SqlSession不同。 2.SqlSession相同,查詢條件不同。 3.SqlSession相同,進行了增刪改操作(有可能影響數據)。 4.SqlSession相同,手動清除緩存。 二級緩存(全局緩存):基于namespace級別的緩存:一個namespace對應一個二級緩存: 工作機制 1、一個會話,查詢一條數據,這個數據就會被放在當前會話的一級緩存中; 2、如果會話關閉;一級緩存中的數據會被保存到二級緩存中;新的會話查詢信息,就可以參照二級緩存中的內容; 3、sqlSession===Employee==>Employee Department===>Department 不同namespace查出的數據會放在自己對應的緩存中(map) 效果:數據會從二級緩存中獲取 查出的數據都會被默認先放在一級緩存中。 只有會話提交或者關閉以后,一級緩存中的數據才會轉移到二級緩存中 使用: 1)、開啟全局二級緩存配置:<setting name="cacheEnabled" value="true"/> 2)、去mapper.xml中配置使用二級緩存: <cache></cache> 3)、我們的POJO需要實現序列化接口 二級緩存中的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接口即可; ~~~ 和緩存有關的設置/屬性: 1)、cacheEnabled=true: false:關閉緩存(二級緩存關閉)(一級緩存一直可用的) 2)、每個select標簽都有useCache="true": false:不使用緩存(一級緩存依然使用,二級緩存不使用) 3)、【每個增刪改標簽的:flushCache="true":(一級二級都會清除)】 增刪改執行完成后就會清楚緩存; 測試:flushCache="true":一級緩存就清空了;二級也會被清除; 查詢標簽:flushCache="false": 如果flushCache=true;每次查詢之后都會清空緩存;緩存是沒有被使用的(一級,二級都會清除); 4)、sqlSession.clearCache();只是清楚當前session的一級緩存; 5)、localCacheScope:本地緩存作用域:(一級緩存SESSION);當前會話的所有數據保存在會話緩存中;STATEMENT:可以禁用一級緩存; 對于mybatis而言緩存僅僅是一個Map集合。PerpetualCache 永久緩存類。 memcache,ehcache (hibernate在使用), redis... https://blog.csdn.net/luanlouis/article/details/41390801 強烈推薦大神博客。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看