mybatis學習 快取

2021-09-26 00:02:49 字數 1761 閱讀 7050

一級快取

1.首先讓我們來證明一級快取的存在。

**:使用者持久層dao

我們可以發現,雖然在上面的**中我們查詢了兩次,但最後只執行了一次資料庫操作,這就是 mybatis 提供給我們的一級快取在起作用了。因為一級快取的存在,導致第二次查詢 id 為 55 的記錄時,並沒有發出 sql 語句從資料庫中查詢資料,而是從一級快取中查詢。

一級快取是 sqlsession 範圍的快取,當呼叫 sqlsession 的修改,新增,刪除,commit(),close()等方法時,就會清空一級快取。

第一次發起查詢使用者 id 為 1 的使用者資訊,先去找快取中是否有 id 為 1 的使用者資訊,如果沒有,從資料庫查

詢使用者資訊。

得到使用者資訊,將使用者資訊儲存到一級快取中。

如果 sqlsession 去執行 commit 操作(執行插入、更新、刪除),清空 sqlsession 中的一級快取,這樣

做的目的為了讓快取中儲存的是最新的資訊,避免髒讀。

第二次發起查詢使用者 id 為 1 的使用者資訊,先去找快取中是否有 id 為 1 的使用者資訊,快取中有,直接從快取

中獲取使用者資訊。

一級快取清空測試

由上可知當執行更新操作後,再次查詢id為55的使用者,又重新執行了sql

語句,從資料庫進行了查詢操作。

開啟二級快取

在 sqlmapconfig.xml 檔案開啟二級快取

開啟二級快取支援

usecache="true":

使用二級快取

select * from user where id=#

測試

經過上面的測試,我們發現執行了兩次查詢,並且在執行第一次查詢後,我們關閉了一級快取,再去執行第二

次查詢時,我們發現並沒有對資料庫發出 sql 語句,所以此時的資料就只能是來自於我們所說的二級快取。

注:一級快取存的是物件,而二級快取存的是資料,當你要用時,它就會建立乙個新的物件,並把資料給它。

MyBatis學習 快取

將資料存放在程式記憶體中,極大地提公升了程式讀寫資料的速度 mybatis提供快取,用於減輕資料查詢的壓力,提高效能 sqlsession級別的快取 每個session對應乙個快取 一級快取是sqlsession級別的快取。在運算元據庫時需要構造 sqlsession物件,在物件中有乙個 記憶體區域...

Mybatis學習 快取

一級快取 sqlsession級別 一級快取也叫本地快取。在mybatis中,一級快取是預設開啟的。一級快取只存在於乙個連線開啟與關閉之間。在乙個連線開啟與關閉之間的查詢結果會,存在一級快取中。下一次再次查詢此物件會直接從快取中取出,而不再經過sql語句查詢。測試1 由上圖可以看出,在同乙個連線中,...

hibernate快取,mybatis快取詳解

hibernate的快取有一級快取,二級快取,查詢快取。一級快取 很簡單,session級別的快取,通過get,update可以將物件放到一級快取中。二級快取 sessionfactory級別的快取,通過get,list可以將物件放到二級快取中,這裡我必須細講一下,list雖然能夠把物件放入二級快取...