1. mybatis中的延遲載入,也稱為懶載入,是指在進行關聯查詢時,按照設定延遲載入規則推遲對關聯物件的select查詢。延遲載入可以有效的減少資料庫壓力。
注意:mybatis的延遲載入只是對關聯物件的查詢有延遲設定,對於主載入物件都是直接執行查詢語句的。
2.mybatis根據對關聯物件查詢的select語句的執行時機,分為3種型別:
直接載入
侵入式延遲載入
深度延遲載入
直接載入
執行完對主載入物件的select語句,馬上執行對關聯物件的select查詢
侵入是延遲
執行對主載入物件的查詢時,不會執行對關聯物件的查詢。但是當要訪問主載入物件的詳情時,就會馬上執行關聯物件的select查詢。即對關聯物件的查詢執行,侵入到了主載入物件的詳情訪問中。也可以這樣理解:將關聯物件的詳情侵入到了主載入物件的詳情中,即將關聯物件的詳情作為主載入物件詳情的一部分出現了
深度延遲
執行對主載入物件的查詢時,不會執行對關聯物件的查詢。訪問主載入物件的詳情時也不會執行關聯物件的select查詢。只有當真正訪問關聯物件的詳情時,才會執行對關聯物件的select查詢。
注意:延遲載入的應用要求:關聯物件的查詢與主載入物件的查詢必須是分別進行的select語句,不能是使用多表連線所進行的select查詢。因為,多表連線查詢,實質是對一張表的查詢,對由多個表連線後形成的一張表的查詢。會一次性將多張表的所有資訊查詢出來。
查詢快取
查詢快取的使用,主要是為了提供查詢訪問速度。將使用者對同一資料的重複查詢過程簡化,不再每次均從資料庫查詢獲取結果資料,從而提高訪問速度。
快取的說明
mybatis查詢快取機制。根據快取區的作用域與生命週期,可劃分為兩種:一級快取和二級快取。
一級快取存在性的證明:
一級快取---從快取中查詢資料的依據
快取的底層實現是乙個map,map的value是查詢結果
map的key,即查詢依據,使用的orm架構不同,查詢依據是不同的
mybatis的查詢依據是:sql的id+sql語句
hibernate的查詢依據是:查詢結果物件的id
增刪改對一級快取的影響:
增刪改會清空一級快取
mybatis快取:
開啟二級快取的三個條件
增刪改對二級快取的影響
1.增刪改也會清空二級快取
2.對於二級快取的清空實質上是對value清空為null,key依然存在,並非將entry刪除
3.從db中進行select查詢的條件是:
1.快取中根本不存在這個key
2.存在key對應的entry,但是value為null
二級快取的配置
這個更高階的配置建立了乙個 fifo 快取,並每隔 60 秒重新整理,存數結果物件或列表的 512 個引用,
而且返回的物件被認為是唯讀的
可用的**策略
lru – 最近最少使用的:移除最長時間不被使用的物件。
fifo – 先進先出:按物件進入快取的順序來移除它們。
soft – 軟引用:移除基於垃圾**器狀態和軟引用規則的物件。
weak – 弱引用:更積極地移除基於垃圾收集器狀態和弱引用規則的物件。
預設的是 lru。
flushinterval(重新整理間隔)可以被設定為任意的正整數,而且它們代表乙個合理的毫秒
形式的時間段。預設情況是不設定,也就是沒有重新整理間隔,快取僅僅呼叫語句時重新整理。
size(引用數目)可以被設定為任意正整數,要記住你快取的物件數目和你執行環境的
可用記憶體資源數目。預設值是 1024。
readonly(唯讀)屬性可以被設定為 true 或 false。唯讀的快取會給所有呼叫者返回
緩 存物件的相同例項。因此這些物件不能被修改。這提供了很重要的效能優勢。
可讀寫的快取 會返回快取物件的拷貝(通過序列化) 。這會慢一些,但是安全,因此預設是 false。
mybatis延遲載入,快取
延遲載入又叫懶載入,也叫按需載入。也就是說先載入主資訊,在需要的時候,再去載入從資訊。在mybatis中,resultmap標籤 的association標籤和collection標籤具有延遲載入的功能。1.讀取配置檔案 inputstream is resources.getresourceass...
Mybatis懶載入和快取機制
mybatis的配置快取機制和懶載入 二級快取的侷限性 在乙個物件更新後,無法更新其他同乙個namespace中的物件,並且會清空。二級快取以namespace劃分。一級快取 在同乙個sqlsession中兩次執行相同的sql語句,第一次執行完畢會將資料庫中查詢的資料寫到快取 記憶體 第二次會從快取...
Mybatis延遲載入和查詢快取
在全域性配置引數設定開啟延遲載入總開關 name lazyloadingenabled value true name aggressivelazyloading value false settings 設定項 描述允許值 預設值lazyloadingenabled 全域性性設定懶載入。如果設為 ...