摘要:理解與掌握緩存框架一級緩存默認(rèn)就可以使用框架處理緩存是依賴映射,的內(nèi)部緩存使用一個,為語句。一級緩存的作用域是一個,一旦發(fā)生變化,一級緩存失敗在同一個中,執(zhí)行相同的查詢,第一次會去查詢數(shù)據(jù)庫,并寫到緩存中第二次直接從緩存中取。
MyBatis理解與掌握(緩存)
@(MyBatis)[Java, 框架, MyBatis]
一級緩存(SqlSession)默認(rèn)就可以使用
框架處理緩存是 依賴sql映射id ,Mybatis的內(nèi)部緩存使用一個HashMap,key為hashcode+statementId+sql語句。Value為查詢出來的結(jié)果集映射成的java對象。
一級緩存的作用域是一個SqlSession ,一旦session發(fā)生變化,一級緩存失敗
在同一個SqlSession中,執(zhí)行相同的查詢SQL,第一次會去查詢數(shù)據(jù)庫,并寫到緩存中;第二次直接從緩存中取。當(dāng)執(zhí)行SQL時兩次查詢中間發(fā)生了增刪改操作,則SqlSession的緩存清空。
每次查詢會先去緩存中找,如果找不到,再去數(shù)據(jù)庫查詢,然后把結(jié)果寫到緩存中。
二級緩存(SqlSessionFactory)默認(rèn)無法使用
如果想要使用,需要進(jìn)行配置, 在映射文件中增加標(biāo)簽
要求緩存類必須實(shí)現(xiàn)可序列化接口
二級緩存是mapper級別的。Mybatis默認(rèn)是沒有開啟二級緩存。
第一次調(diào)用mapper下的SQL去查詢用戶信息。查詢到的信息會存到該mapper對應(yīng)的二級緩存區(qū)域內(nèi)。
第二次調(diào)用 相同namespace下的mapper映射文件中相同的SQL 去查詢用戶信息。會去對應(yīng)的二級緩存內(nèi)取結(jié)果。
如果調(diào)用相同namespace下的mapper映射文件中的增刪改SQL,并執(zhí)行了commit操作。此時會清空該namespace下的二級緩存。
使用二級緩存(1)主配置文件mybatis-config.xml中做如下配置:
2)在映射文件中,加入以下內(nèi)容,開啟二級緩存:
eviction:移除策略。
LRU:最近最少使用的對象會被移除。
FIFO:First In First Out
flushInterval:緩存刷新時間(毫秒)
readOnly:只讀。二級緩存中一旦修改了數(shù)據(jù),別人取到的緩存數(shù)據(jù)就不準(zhǔn)確了,所以要設(shè)置為readonly
size:1024(個)
(3)緩存類實(shí)現(xiàn)序列化
由于二級緩存的數(shù)據(jù)不一定都是存儲到內(nèi)存中,它的存儲介質(zhì)多種多樣,所以需要給緩存的對象執(zhí)行序列化。
如果該類存在父類,那么父類也要實(shí)現(xiàn)序列化。
該statement中設(shè)置userCache=false可以禁用當(dāng)前select語句的二級緩存,即每次查詢都是去數(shù)據(jù)庫中查詢,默認(rèn)情況下是true。
刷新二級緩存文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/77235.html
摘要:理解與掌握原理分析框架功能架構(gòu)接口層提供給外部使用的接口,開發(fā)人員通過這些本地來操作數(shù)據(jù)庫。流程分析數(shù)據(jù)處理過程根據(jù)的查找相應(yīng)的對象。預(yù)處理對象,得到對象。傳入和結(jié)果處理對象,通過的方法來執(zhí)行,并對執(zhí)行結(jié)果進(jìn)行處理。 MyBatis理解與掌握(原理分析) @(MyBatis)[Java, 框架, MyBatis] 功能架構(gòu) showImg(https://segmentfault.co...
摘要:如問到是否使用某框架,實(shí)際是是問該框架的使用場景,有什么特點(diǎn),和同類可框架對比一系列的問題。這兩個方向的區(qū)分點(diǎn)在于工作方向的側(cè)重點(diǎn)不同。 [TOC] 這是一份來自嗶哩嗶哩的Java面試Java面試 32個核心必考點(diǎn)完全解析(完) 課程預(yù)習(xí) 1.1 課程內(nèi)容分為三個模塊 基礎(chǔ)模塊: 技術(shù)崗位與面試 計算機(jī)基礎(chǔ) JVM原理 多線程 設(shè)計模式 數(shù)據(jù)結(jié)構(gòu)與算法 應(yīng)用模塊: 常用工具集 ...
摘要:語句在代碼中硬編碼,造成代碼不易于維護(hù),實(shí)際應(yīng)用變化的可能較大,變動需要改變代碼。對結(jié)果集解析存在硬編碼查詢列名,變化導(dǎo)致解析代碼變化,系統(tǒng)不易于維護(hù),如果能將數(shù)據(jù)庫記錄封裝成對象解析比較方便。 MyBatis理解與掌握(簡介) @(MyBatis)[Java, 框架, MyBatis] 簡介 ??Mybatis是一個數(shù)據(jù)持久層框架,MyBatis消除了幾乎所有的JDBC代碼和參數(shù)的手...
摘要:的實(shí)例不是線程安全的,因此是不能被共享的,所以它的最佳的作用域是請求或方法作用域。下面的示例就是一個確保關(guān)閉的標(biāo)準(zhǔn)模式依賴注入框架可以創(chuàng)建線程安全的基于事務(wù)的和映射器并將它們直接注入到你的中,因此可以直接忽略它們的生命周期。 MyBatis理解與掌握(入門例子) @(MyBatis)[Java, 框架, MyBatis] 配置文件 mybatis-config.xml ...
閱讀 1798·2021-11-24 10:21
閱讀 1208·2021-09-22 15:25
閱讀 3170·2019-08-30 15:55
閱讀 708·2019-08-30 15:54
閱讀 3461·2019-08-30 14:20
閱讀 1659·2019-08-30 14:06
閱讀 638·2019-08-30 13:11
閱讀 3144·2019-08-29 16:43