mybatis 事務和快取

2022-05-15 05:41:14 字數 500 閱讀 9158

即session快取,作用域為 session,當 session flush 或 close 之後,該session中的所有 cache 就將清空,預設開啟。

在業務層執行方法時,我們通常會在方法上加事務註解@transactional,這樣的話進入方法時,就會從資料庫連線池拿取鏈結資訊,建立連線,轉換屬性,將autocommit設定為true,下面進行的資料庫操作都在這個事務下,每次查詢的結果都會以namespace的形式標識儲存在快取區域中(記憶體),下次如果有sql發出,就會去快取中對比namespace,如果匹配有,就直接拿取結果返回,這就是快取,因此我遇到的問題就是這樣產生的,第一次查出來的結果儲存在namespace中,我進行了修改,由於物件的操作可以認為都是通過指標(做個比喻),對物件存放位置進行了操作,即是操作了快取區域中的物件,所以後面的查詢走快取返回的就是修改後的資料;

快取是什麼時候失效呢?在事務結束時,事務結束時就相當於執行了commit命令,sqlsession關閉,快取失效,再進行的查詢就直接發出sql,不會走快取了

Mybatis懶載入和快取機制

mybatis的配置快取機制和懶載入 二級快取的侷限性 在乙個物件更新後,無法更新其他同乙個namespace中的物件,並且會清空。二級快取以namespace劃分。一級快取 在同乙個sqlsession中兩次執行相同的sql語句,第一次執行完畢會將資料庫中查詢的資料寫到快取 記憶體 第二次會從快取...

Mybatis所用的模式和快取

inputstream in resources.getresourceasstream sqlmapconfig.xml 2.建立sqlsessionfactory工廠 sqlsessionfactorybuilder builder new sqlsessionfactorybuilder 建立...

Mybatis的延遲載入和快取

1.mybatis中的延遲載入,也稱為懶載入,是指在進行關聯查詢時,按照設定延遲載入規則推遲對關聯物件的select查詢。延遲載入可以有效的減少資料庫壓力。注意 mybatis的延遲載入只是對關聯物件的查詢有延遲設定,對於主載入物件都是直接執行查詢語句的。2.mybatis根據對關聯物件查詢的sel...