關於mybaits的快取

2021-08-07 11:14:00 字數 859 閱讀 5038

mybaits框架為了能夠更加高效的查詢資料庫中的資料,在查詢的時候設定了快取,具體是怎麼回事呢? 一起來學習下吧

mybaits的快取有兩級

一級快取:快取在session 中,每個session私有,一定存在。

二級快取:快取在session和資料庫中的某個位置,可以設定,屬於所以session的公共快取。

mybaits訪問資料庫的過程示意圖如下

每次查詢,首先訪問session的快取,拿到資料就返回,然沒有就去二級快取檢視,拿到資料就返回沒有,就去訪問資料庫。從資料庫拿到資料後,先到二級快取放乙份,再到session快取放乙份。

拿二級快取資料和session快取資料的區別在於, 拿到session快取資料時直接引用,拿到二級快取的資料時拷貝,轉殖, 轉殖拿到的資料hashcodehi不一樣。

下面我會來演示一下。

第乙個hashcode:是從資料庫中拿的。

第二個hashcode: 是和第乙個hashcode屬於同乙個session,所以拿的資料師在第乙個session快取中拿到,屬於引用。所以前面兩個hashcode儲存一致

第三哥hashcode:是從二級快取拿的,轉殖,hashcode不一樣,同時因為不是從資料庫中拿的資料,不快取。

第四個hashcode:也是在二級快取中拿的,u也是轉殖,hashcode不一樣

Mybaits 快取設定

一級快取 mybatis 的一級快取存在於 sqlsession 的宣告週期中,在同乙個 sqlsession 中查詢時,mybatis 會把執行的方法和引數通過演算法生成快取的鍵值,將鍵值和查詢結果存入乙個 map 物件中.如果同乙個 sqlsession 中執行的方法和引數完全一致,那麼通過演算...

Mybaits的優缺點

1 優點 基於sql語句程式設計,相當靈活,不會對應用程式或者資料庫的現有設計造成任何影響,sql寫在xml裡,解除sql 與程式 的耦合,便於統一管理 提供xml標籤,支援編寫動態sql語句,並可重用。與jdbc相比,減少了50 以上的 量,消除了jdbc大量冗餘的 不需要手動開關連線 很好的與各...

mybaits的原理和應用

是乙個orm框架。建立 物件 protected t newinstance public class implements invocationhandler serializable override public object invoke object proxy,method method...