Mybatis中的緩存

Mybatis中的緩存:

什么是緩存?

? 存在于內(nèi)存中的臨時數(shù)據(jù)。

為什么使用緩存?

? 減少與數(shù)據(jù)庫的交互次數(shù),提高執(zhí)行的效率。

什么數(shù)據(jù)使用于緩存,什么樣的數(shù)據(jù)不能使用?

? 適用于緩存:經(jīng)常查詢并且不經(jīng)常改變的。數(shù)據(jù)的正確性對最終的結(jié)果影響不大。

? 不適用于緩存:經(jīng)常改變的數(shù)據(jù)。數(shù)據(jù)的正確與否對最終的結(jié)果影響很大。例如商品的庫存、銀行的匯率、股市的牌價。

一級緩存:

? 它指的是MyBatis中Sqlsession對象的緩存。

? 當(dāng)我們執(zhí)行查詢之后,查詢的結(jié)果會同時存入到SqlSession為我們提供一塊區(qū)域中。該區(qū)域的結(jié)構(gòu)是一個Map。當(dāng)我們再次查詢同樣的數(shù)據(jù),MyBatis會先去Sqlsession中查詢是否有,有的話直接拿出來,當(dāng)SqlSession對象消失時,MyBatis的一級緩存也就消失了。具體情況:當(dāng)調(diào)用sqlseesion的修改,添加,刪除,commit(),close()等方法時,就會清空一級緩存。

二級緩存:

? 它指的是MyBatis中SqlSessionFactory對象的緩存,由同一個SQLSessionFactory對象創(chuàng)建的SQLSession共享其緩存。二級緩存存入的是數(shù)據(jù)。

二級緩存的使用步驟:

? 第一步:讓MyBatis框架支持二級緩存(主配置文件)

<settings>

?       <setting name="cacheEnable" value="true">

</settings>

描述:全局的開啟或關(guān)閉配置文件中的所有映射器已經(jīng)配置的任何緩存,默認(rèn)值就是true。

? 第二步:讓當(dāng)前的映射文件支持二級緩存(映射文件中配置)

<!--開啟文件支持二級緩存-->

<cache><cache/>

? 第三步:讓當(dāng)前的操作支持二級緩存(在select標(biāo)簽中進(jìn)行配置,useCache)

<select id="find" useCache="true">
    select * from user where id = #{id}
</select>
注意:實現(xiàn)二級緩存要將實體類實現(xiàn)Serializable接口(啟用其序列化功能的接口)。

開啟了二級緩存后,還需要將要緩存的pojo實現(xiàn)Serializable接口,為了將緩存數(shù)據(jù)取出執(zhí)行反序列化操作,因為二級緩存數(shù)據(jù)存儲介質(zhì)多種多樣,不一定只存在內(nèi)存中,有可能存在硬盤中,如果我們要再取這個緩存的話,就需要反序列化了。所以建議mybatis中的pojo類都實現(xiàn)Serializable接口。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容