Hibernate 中get與load的區別

2021-06-18 16:22:01 字數 716 閱讀 2941

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 ...