hibernate中用於獲取資料的方法被有意識的分成2種分類:
1. 立刻載入方法: get list
2. 延遲載入方法: load iterate(select id from 表 where 條件 + n)
a)所謂的「立刻載入」就是首先在session快取中查詢,然後在二級快取中查詢,還沒有就查詢資料庫,數
據庫中沒有就返回null.(只要快取中沒有這條記錄,就立刻查詢資料庫)
b)所謂的「延遲載入」就是在呼叫方法的時候並沒有立刻查詢資料庫,而是等待"必須"查詢點.
必須查詢點: 自身沒有的資料, 只有資料庫那邊才有。
get與load區別:
1. get是立刻載入 load是延遲載入,load的時候只是返回了乙個proxy(**)物件,
這個**物件中只有id,沒有其他資料.只有在觸發必須查詢點的時候才查詢資料庫。
2. get假如獲取不到具體的資料, 接著對物件進行操作,報空指標異常
load假如獲取不到具體的資料,報objectnotfoundexception
3. get對1級快取可讀可寫
load對1級快取可讀可寫
list與iterate區別:
1. list是立刻查詢 iterate使用延遲載入,有可能會產生n+1次查詢
2. list對一級快取是可寫不可讀
iterate對1級快取可寫也可讀
hibernate中get 與 load 區別
session.get 與 session.load區別 1.對於get方法,hibernate會確認一下該id對應的資料是否存在,首先在session快取中查詢,然後在二級快取中查詢,還沒有就查詢資料庫,資料庫中沒有就返回null。2.load方法載入實體物件的時候,根據對映檔案上類級別的lazy...
關於Hibernate中load與get的討論
路人甲 hibernate中有兩個極為相似的方法get 與load 他們都可以通過指定的實體類與id從資料庫中讀取資料,並返回對應的例項,但hibernate不會搞兩個完全一樣的方法的,它們間的不同在於 如果找不到符合條件的紀錄,get 方法將返回null 而load 將會報出objectnotfo...
Hibernate中的get與load有什麼區別
學校學習版 1 get是立即載入,load是延遲載入 2 查詢不到資料的時候,get返回null,load拋異常 3 get預設立即載入 返回非 物件 load預設是延遲載入 返回 物件 4 在hibernate實體對映檔案中可修改lazy屬性的值來改變load方法的載入方式 lazy false ...