swf缓存文件在哪里_面试官:mybatis一级缓存二级缓存的区别都不知道,知道门在哪吧...
面試官:蟲(chóng)蟲(chóng)你簡(jiǎn)歷上寫了了解mybatis緩存,那你能說(shuō)說(shuō)一級(jí)緩存和二級(jí)緩存的區(qū)別嗎?
蟲(chóng)蟲(chóng):我只知道這是用來(lái)緩存sql查詢的數(shù)據(jù)
面試官:沒(méi)了?
蟲(chóng)蟲(chóng):沒(méi)了
面試官:公司門知道在哪里吧 自己走還是我送你
以上是蟲(chóng)蟲(chóng)的面試經(jīng)歷 于是蟲(chóng)蟲(chóng)決定惡補(bǔ)一下Mybatis緩存機(jī)制的知識(shí)
Mybatis的緩存,包括一級(jí)緩存和二級(jí)緩存
Mybatis對(duì)緩存提供支持,一級(jí)緩存是默認(rèn)使用的
二級(jí)緩存需要手動(dòng)開(kāi)啟
區(qū)別:一級(jí)緩存的作用域是一個(gè)sqlsession內(nèi);二級(jí)緩存作用域是針對(duì)mapper進(jìn)行緩存.
一級(jí)緩存:
在參數(shù)和SQL完全一樣的情況下,我們使用同一個(gè)SqlSession對(duì)象調(diào)用一個(gè)Mapper方法,往往只執(zhí)行一次SQL,因?yàn)槭褂肧elSession第一次查詢后,MyBatis會(huì)將其放在緩存中,以后再查詢的時(shí)候,如果沒(méi)有聲明需要刷新,并且緩存沒(méi)有超時(shí)的情況下,SqlSession都會(huì)取出當(dāng)前緩存的數(shù)據(jù),而不會(huì)再次發(fā)送SQL到數(shù)據(jù)庫(kù)。
一級(jí)緩存時(shí)執(zhí)行commit,close,增刪改等操作,就會(huì)清空當(dāng)前的一級(jí)緩存;當(dāng)對(duì)SqlSession執(zhí)行更新操作(update、delete、insert)后并執(zhí)行commit時(shí),不僅清空其自身的一級(jí)緩存(執(zhí)行更新操作的效果),也清空二級(jí)緩存(執(zhí)行commit()的效果)。
二級(jí)緩存:
二級(jí)緩存指的就是同一個(gè)namespace下的mapper,二級(jí)緩存中,也有一個(gè)map結(jié)構(gòu),這個(gè)區(qū)域就是一級(jí)緩存區(qū)域。一級(jí)緩存中的key是由sql語(yǔ)句、條件、statement等信息組成一個(gè)唯一值。一級(jí)緩存中的value,就是查詢出的結(jié)果對(duì)象。
1、在配置文件中 開(kāi)啟二級(jí)緩存的總開(kāi)關(guān)
<setting name="cacheEnabled" value="true" />2、 在mapper映射文件中開(kāi)啟二級(jí)緩存
<cache eviction="FIFO" flushInterval="60000" size="512" readOnly="true"/>參數(shù)名屬性eviction收回策略flushInterval刷新間隔size引用數(shù)目readOnly只讀
關(guān)于eviction的各個(gè)參數(shù)屬性:
參數(shù)名屬性eviction="LRU"最近最少使用的:移除最長(zhǎng)時(shí)間不被使用的對(duì)象。 (默認(rèn))eviction="FIFO"先進(jìn)先出:按對(duì)象進(jìn)入緩存的順序來(lái)移除它們。eviction="SOFT"軟引用:移除基于垃圾回收器狀態(tài)和軟引用規(guī)則的對(duì)象。eviction="WEAK"弱引用:更積極地移除基于垃圾收集器狀態(tài)和弱引用規(guī)則的對(duì)象。
3、實(shí)體類實(shí)現(xiàn)Serializable
禁用緩存
如測(cè)試sql語(yǔ)句性能時(shí)緩存會(huì)影響測(cè)試準(zhǔn)確性 需要禁用在映射文件中:默認(rèn)值是true useCache=”false”
<select id="findAllPets" resultMap="petsMap" useCache="false">select * from pets </select>刷新緩存
在映射文件中:屬性:flushCache=”true”刷新緩存,在查詢語(yǔ)句中,默認(rèn)值是false,在新增刪除修改語(yǔ)句中,默認(rèn)值是true(清空緩存)
作者:愿做Bookworm鏈接:https://segmentfault.com/a/1190000023156524?utm_source=tag-newest
總結(jié)
以上是生活随笔為你收集整理的swf缓存文件在哪里_面试官:mybatis一级缓存二级缓存的区别都不知道,知道门在哪吧...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python的解释提示符为_python
- 下一篇: 二进制图片在http怎么显示_HTTP/