所謂實體查詢即
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方法可返回實體...