Mybatis 一級快取與二級快取

2022-06-28 17:30:16 字數 1531 閱讀 3358

一級快取

(1).使用範圍:從sqlsession會話開始到結束

(2).使用:預設開啟,無法關閉

(3).測試使用(需要開啟日誌觀察資料庫的連線情況):

public static void maintest()

//result:true,將結果集列印,可以看出兩次結果集列印之間是沒有再做資料庫連線的

(4).快取失效的4種情況:

二級快取

(1).簡介

(2).使用:

public static void maintest()

/result:true

(3).注意

客戶端訪問了某個能開啟會話功能的資源, web伺服器就會建立乙個與該客戶端對應的httpsession物件,每個httpsession物件都要站用一定的記憶體空間。如果在某一時間段內訪問站點的使用者很多,web伺服器記憶體中就會積累大量的httpsession物件,消耗大量的伺服器記憶體,即使使用者已經離開或者關閉了瀏覽器,web伺服器仍要保留與之對應的httpsession物件,在他們超時之前,一直占用web伺服器記憶體資源。

web伺服器通常將那些暫時不活動但未超時的httpsession物件轉移到檔案系統或資料庫中儲存,伺服器要使用他們時再將他們從檔案系統或資料庫中裝載入記憶體,這種技術稱為session的持久化。

將httpsession物件儲存到檔案系統或資料庫中,需要採用序列化的方式將httpsession物件中的每個屬性物件儲存到檔案系統或資料庫中;將httpsession物件從檔案系統或資料庫中裝載如記憶體時,需要採用反序列化的方式,恢復httpsession物件中的每個屬性物件。所以儲存在httpsession物件中的每個屬性物件必須實現serializable介面

public class userbean implements serializable
唯讀的快取會給所有呼叫者返回快取物件的相同例項。 因此這些物件不能被修改。這就提供了可觀的效能提公升。而可讀寫的快取會(通過序列化)返回快取物件的拷貝。 速度上會慢一些,但是更安全,因此預設值是 false。

快取原理,這邊用狂神的圖來加深理解

使用ehcache外部快取

(1).導包

(2).寫配置檔案.xml

(3).在主配置檔案中使用:設定cache標籤的type屬性

注:現在多用redis資料庫

關閉二級快取 Mybatis一級快取 二級快取詳講

首先,我們先看一下這個標題 查詢快取 那就說明跟增 刪 改是沒有任何關聯的,只有在查詢時,才會遇到快取,增刪改不涉及!查詢快取目前mybatis中提供了兩個,分別是 一級快取 二級快取 所以,sqlsession的快取,是屬於一級快取 那,又有什麼用呢?比如,我們現在資料庫中有兩條資料,分別是張三跟...

mybatis查詢快取之一級快取和二級快取詳細解析

一級快取是mybatis預設就幫我們開啟的,我們不需要多做配置,但是我們得知道其中原理,否則我們也不知道怎麼使用,也不知道我們到底有沒有一級快取。上面第二部分說過一級快取的作用域是同乙個sqlsession,sqlsession的作用就是建立和資料庫的會話,我們對資料庫表的增刪改查都是通過sqlse...

Mybatis一級快取與二級快取

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