MyBatis學習7 MyBatis中的一級快取

2021-08-15 09:50:12 字數 867 閱讀 2700

快取的作用是減輕資料庫的壓力,提高資料庫的效能的。mybatis中提供了一級快取和二級快取,先來看一下兩個快取的示意圖: 

從圖中可以看出:

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

這篇博文主要總結一下mybatis中的一級快取,看一下一級快取的工作原理: 

從圖中可以看出:第一次發起查詢使用者id為1的使用者資訊,先去找快取中是否有id為1的使用者資訊,如果沒有,從資料庫查詢使用者資訊。得到使用者資訊,將使用者資訊儲存到一級快取中。 

如果中間sqlsession去執行commit操作(執行插入、更新、刪除),則會清空sqlsession中的一級快取,這樣做的目的為了讓快取中儲存的是最新的資訊,避免髒讀。 

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

mybatis的一級快取比較簡單,我們不知不覺中就在用了,為了完整性,我寫乙個測試**來測一下:

@test

public

void

testcache1() throws exception

—–樂於分享,共同進步! 

—–我的部落格主頁:

Mybatis總結(7) Mybatis快取

正如大多數持久層框架一樣,mybatis 同樣提供了一級快取和二級快取的支援 一級快取 基於perpetualcache 的 hashmap本地快取,其儲存作用域為session,當session flush 或 close之後,該session中的所有 cache 就將清空。2.二級快取,如 eh...

mybatis原始碼解讀(7)

private void typealiaseselement xnode parent else else catch classnotfoundexception e alias author type domain.blog.author alias blog type domain.blog...

Mybatis 的使用 7 快取

l mybatis一級快取預設存在的,不需要配置 l 一級快取的生命週期為session的生命週期,如果session關閉,一級快取消失 l 一級快取,儲存的是物件的位址 第一步 在sqlmapconfig.xml中開啟二級快取功能 第二步 在sql對映檔案中使用標籤,指定當前檔案中的sql語句可以...