load和get方法的區別

2021-08-20 07:50:13 字數 1588 閱讀 8482

所謂實體查詢即

oid查詢,就是使用主鍵作為條件來查詢乙個實體。其中涉及的方法是

session

物件get

方法和load

方法。get方法:     

/**

*

根據id

查詢乙個實體

*@param

entitytype

指的是要查詢的實體類位元組碼物件

*@param

id 查詢的條件,即主鍵的值。

*@return

返回的是實體類物件

*/

t get(classentitytype,serializable id);

get方法的**演示:

/**

* 需求: 使用get方法查詢id為1的客戶

*/@test

public void test1()

load方法:

/**

* 根據id查詢乙個實體

* @param theclass 指的是要查詢的實體類位元組碼

* @param id查詢的條件,即主鍵的值。

* @return 返回的是實體類物件或者是實體類物件的**物件

*/t load(classtheclass, serializable id);

load方法的具體演示:

/**

* 需求: 使用load方法查詢id為1的客戶

*/@test

public void test2()

區別1、 查詢的時機不一樣 

get方法任何時刻都是立即載入,只要呼叫get方法,就馬上發起資料庫查詢。

load方法預設情況下是延遲載入,真正用到物件的非oid欄位資料才發起查詢。

load方法是可以通過配置的方式改為立即載入。

配置的方式

由於

load

方法是hibernate

的方法所以只有

xml的方式:

<

class

name

="customer"

table

="cst_customer"

lazy="false"

>

2、返回的結果不一樣

get方法永遠返回查詢的實體類物件

load方法返回的是**物件

立即載入:是不管用不用馬上查詢。

延遲載入:是等到真正用的時候才發起查詢。

Session的load和get方法區別是什麼?

如果沒有找到符合條件的記錄,get方法返回null值,而load方法會丟擲異常 get方法直接返回實體類物件,load方法返回實體類物件的 在hibernate3之前,get方法只在一級快取 內部快取 中進行資料查詢,如果沒有找到對應的資料則越過二級快取,直接發出sql語句完成資料的讀取 load方...

get 和load 的區別

get 方法直接返回實體類,如果查不到資料則返回null。load 會返回乙個實體 物件 當前這個物件可以自動轉化為實體物件 但當 物件被呼叫時,如果資料不存在,則會丟擲 org.hibernate.objectnotfoundexception異常 load 先到快取 session快取 二級快取...

Load方法和get方法有何區別

load方法和get方法有何區別 session.load get方法均可以根據指定的實體類和id從資料庫讀取記錄,並返回與之對應的實體物件。其區別在於 如果未能發現符合條件的記錄,get方法返回null,而load方法會丟擲乙個objectnotfoundexception。load方法可返回實體...