最新回答 / 崔勇
首先一級(jí)緩存必須是同一個(gè)session,你的session2提交并不會(huì)對(duì)session1的緩存進(jìn)行update,而且這種事應(yīng)該編碼時(shí)避免的錯(cuò)誤,session在使用完后及時(shí)關(guān)閉。這個(gè)session緩存和數(shù)據(jù)庫事務(wù)應(yīng)該是沒什么關(guān)系的。個(gè)人理解,如有偏差歡迎指正。
2020-11-22
最贊回答 / 屬牛的金牛座搬磚工
session的生命周期在事務(wù)內(nèi),也就是說,事務(wù)1和事務(wù)2分別有對(duì)應(yīng)的session1和session2。一級(jí)緩存的作用域在同一session內(nèi),所以事務(wù)2提交只會(huì)清空session2的緩存,對(duì)session1沒有影響。
2020-09-01
最新回答 / 慕仔3163040
在insert之前,如果在一個(gè)sqlsession中做了重復(fù)的業(yè)務(wù)查詢操作,那么一級(jí)緩存是可能命中的,否則的話,的確是永遠(yuǎn)沒有起作用。
2020-08-23
最新回答 / weixin_慕九州2048595
二級(jí)緩存中:一個(gè)SqlSession產(chǎn)生的二級(jí)緩存必須在關(guān)閉或者提交的時(shí)候才有效。因?yàn)橹挥嘘P(guān)閉后,才知道你沒有做更新等操作,產(chǎn)生的二級(jí)緩存才不會(huì)被銷毀。這就跟事務(wù)是一樣的,一個(gè)事務(wù)提交之后,其他的事務(wù)才能獲取到 前面事務(wù)修改的數(shù)據(jù)。
2020-08-11
最新回答 / burg_xun
我感覺沒必要究竟于這個(gè)字眼, 臟讀 在MySql 里面的表現(xiàn) 是 讀到事物未提交的數(shù)據(jù),改數(shù)據(jù)可能會(huì)發(fā)生回滾,所以叫臟讀,數(shù)據(jù)庫事物隔離級(jí)別? 讀未提交 是用來解決這個(gè)問題的。而這邊老師 說的? 臟讀? ?是不同的SqlSessionFactory下的問題,這邊你所說的 沒法讀到最新數(shù)據(jù)的問題,可以理解為臟讀的呀,因?yàn)榫彺鎭碓词菑臄?shù)據(jù)庫里面讀然后緩存下來的,如果SqlSessionFactoryA 里面對(duì)數(shù)據(jù)做了更新, 這個(gè)時(shí)候SqlSessionFactoryB 里面的可能還是舊的數(shù)據(jù),也可以稱之為臟數(shù)...
2020-06-26
最贊回答 / ITLover
Mybatis Cache一級(jí)緩存特點(diǎn)自動(dòng)啟用通過在setting中設(shè)置localCacheScope= STATEMENT(默認(rèn)為SESSION)全局禁用一級(jí)緩存在Dao接口方法上添加注解:@Options(flushCache=Options.FlushCachePolicy.True),禁用這個(gè)方法的一級(jí)緩存命中原則,同一SqlSession內(nèi),以下5個(gè)條件組成key,放入緩存中:條件一:statementId相同條件二:sql上用到的參數(shù)要一樣條件三:分頁參數(shù)要一樣?條件四:sql語句的文本要一樣...
2020-06-14