MyBatis學習總結(八) 快取機制

2021-09-01 22:09:53 字數 1150 閱讀 6060

mybatis提供了快取機制減輕資料庫壓力,提高資料庫效能

mybatis的快取分為兩級:一級快取、二級快取

一級快取是sqlsession級別的快取,快取的資料只在sqlsession內有效

一級快取:

mybatis的一級快取是sqlsession級別的快取,在運算元據庫的時候需要先建立sqlsession會話物件,在物件中有乙個hashmap用於儲存快取資料,此hashmap是當前會話物件私有的,別的sqlsession會話物件無法訪問。

具體流程:

1.第一次執行select完畢會將查到的資料寫入sqlsession內的hashmap中快取起來

2.第二次執行select會從快取中查資料,如果select相同切傳引數一樣,那麼就能從快取中返回資料,不用去資料庫了,從而提高了效率

注意事項:

1.如果sqlsession執行了dml操作(insert、update、delete),並commit了,那麼mybatis就會清空當前sqlsession快取中的所有快取資料,這樣可以保證快取中的存的資料永遠和資料庫中一致,避免出現髒讀

2.當乙個sqlsession結束後那麼他裡面的一級快取也就不存在了,mybatis預設是開啟一級快取,不需要配置

二級快取:

二級快取預設是沒有開啟的。需要在setting全域性引數中配置開啟二級快取

conf.xml:

預設是false:關閉二級快取

這裡配置了乙個lru快取,並每隔60秒重新整理,最大儲存512個物件,而卻返回的物件是唯讀的

若想禁用當前select語句的二級快取,新增usecache="false"修改如下:

具體流程:

1.當乙個sqlseesion執行了一次select後,在關閉此session的時候,會將查詢結果快取到二級快取

2.當另乙個sqlsession執行select時,首先會在他自己的一級快取中找,如果沒找到,就回去二級快取中找,找到了就返回,就不用去資料庫了,從而減少了資料庫壓力提高了效能 

注意事項:

Mybatis學習總結八 Mybatis快取

這節內容了解下即可。如多數持久層框架一樣,mybatis同樣提供了一級快取和二級快取。一級快取 1 一級快取也就是session級的快取,預設是開啟的,查詢操作是使用快取的 2 必須是同乙個session,session.close 後就不能使用了 3 查詢條件不一致時不會使用快取 4 清理快取完了...

mybatis學習筆記(八) 快取機制

test public void testfirstlevelcache throws ioexception finally 不同namespace查出的資料會放在自己對應的快取中 map 開啟全域性二級快取配置 eviction fifo flushinterval 60000 readonly...

MyBatis學習 快取

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