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物件,在物件中有乙個 記憶體區域...