MyBatis學習 快取

2021-08-18 21:53:27 字數 1408 閱讀 4993

將資料存放在程式記憶體中,極大地提公升了程式讀寫資料的速度

mybatis提供快取,用於減輕資料查詢的壓力,提高效能

sqlsession級別的快取;每個session對應乙個快取;

一級快取是sqlsession級別的快取。在運算元據庫時需要構造 sqlsession物件,在物件中有乙個(記憶體區域)資料結構(hashmap)用於儲存快取資料。不同的sqlsession之間的快取資料區域(hashmap)是互相不影響的;

一級快取的作用域是同乙個sqlsession,在同乙個sqlsession中兩次執行相同的sql語句,第一次執行完畢會將資料庫中查詢的資料寫到快取(記憶體),第二次會從快取中獲取資料將不再從資料庫查詢,從而提高查詢效率。當乙個sqlsession結束後該sqlsession中的一級快取也就不存在了。

注意事項:

一級快取是基於session的快取,同乙個session下的資料實現快取共享;

mybatis預設開啟一級快取,使用者不能控制(可以通過開發外掛程式對它進行修改);

當表中資料被修改(insert/update/delete)的時候,一級快取會被清空;

一級快取還可以手動清空:session.clearcache();

sessionfactory的快取,不同的session之間也可以實現快取共享

二級快取的使用:

1、啟用二級快取,在核心配置檔案中配置setting項來啟用二級快取;

二級快取的禁用:

在查詢語句中使用usecache配置項,來設定是否使用二級快取

注:一級快取是沒有被禁用的;

二級快取的重新整理:

要設定是否重新整理二級快取,可以使用flushcache配置項;

注意事項:

使用二級快取的對映類要實現序列化(serializable):二級快取的儲存介質不一定在記憶體中,實現序列化之後,儲存的物件可以存放在遠端伺服器;

要將資料刷入二級快取的時候,需要呼叫session.close();

資料被修改(insert/update/delete)後,二級快取也會被清空

ps:因作者能力有限,如有誤還請諒解;

mybatis學習 快取

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

Mybatis學習 快取

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

hibernate快取,mybatis快取詳解

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