mybatis高级(3)_延迟加载_深度延迟_一级缓存_二级缓存
設(shè)置延遲加載需要在mybatis.xml中設(shè)置
注:
侵入式延遲加載為真時是延遲加載
侵入式延遲加載為假時是深度延遲加載
<!-- 延遲加載和深度延遲加載 --><settings><!-- 延遲加載 --><setting name="lazyLoadingEnabled" value="true" /><!-- 侵入式延遲加載,默認(rèn)值是true --><setting name="aggressiveLazyLoading" value="false" /></settings>?
一級緩存
注:
1.框架底層使用map集合存儲緩存
2.MyBatis查詢緩存機(jī)制。根據(jù)緩存區(qū)的作用域與生命周期,可劃分為兩種:一級緩存和二級緩存.MyBatis查詢緩存的作用域是根據(jù)映射文件的namespace劃分的,相同的namespace的mapper查詢數(shù)據(jù)放在同一個緩存區(qū)域。不同namespace下的數(shù)據(jù)互不干擾。無論是一級緩存還是二級緩存,都是按照namespace進(jìn)行分別存放的.一級、二級緩存的不同之處在于,SqlSession一旦關(guān)閉,則SqlSession中的數(shù)據(jù)將不存在,即一級緩存就不復(fù)存在。而二級緩存的生命周期與真?zhèn)€應(yīng)用同步,與SqlSession是否關(guān)閉無關(guān).換句話說,一級緩存是在同一線程(同一SqlSession)間共享數(shù)據(jù),而二級緩存是在不同線程(不同的SqlSession)間共享數(shù)據(jù)。
3.Mybatis一級緩存默認(rèn)集成并開啟
4.MyBatis的查詢依據(jù)是:Sql的id+SQL語句
5.執(zhí)行增刪改時會清空緩存,雖然 底層都是update但是,sql標(biāo)簽必須對應(yīng)操作,不然起到清空緩存的作用
?
二級緩存
1,開啟二級緩存3個條件
(1)在mybatis中設(shè)置cacheEnabled=true
(2)在Mapper文件中添加<cache/>標(biāo)簽
(3)實(shí)體類必須實(shí)現(xiàn)serialize接口
?
轉(zhuǎn)載于:https://www.cnblogs.com/cnsdhzzl/p/6203571.html
總結(jié)
以上是生活随笔為你收集整理的mybatis高级(3)_延迟加载_深度延迟_一级缓存_二级缓存的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QT 使用高清晰
- 下一篇: BZOJ 2115 [Wc2011] X