2012-07-22 34 views
0

我是hibernate的新手。我有一個對象的主鍵值,需要從數據庫加載一個對象。 我讀過一個對象可以使用get()或load()或使用標準API加載。使用休眠加載對象

我有點困惑哪一個更適合在哪種情況下使用。有人可以指導我嗎?

+2

發佈您的代碼到目前爲止總是有幫助的。 – Reimeus 2012-07-22 11:24:58

回答

1

Session.get()檢查對象是否已經在會話中。如果是,它會返回它。如果不是,則執行select語句來加載會話中對象的狀態,並返回它。這是您默認使用的方法。

Session.load()檢查對象是否已經在會話中。如果是,它會返回它。如果沒有,它會創建一個未初始化的代理並返回代理。它甚至沒有打到數據庫。調用代理的第一個方法將使Hibernate從數據庫加載對象的狀態,並初始化代理。例如,當您只需要對現有對象的引用時,通常使用此方法來初始化一對一關聯。

標準查詢或HQL查詢將始終查詢數據庫。你不會用它來做和Session.get()一樣的事情。通過主鍵加載對象以及使用Session.get()初始化否則將被加載的關聯會很有用。如果你知道你需要一個學生完成所有課程,最好將所有內容加載到一個查詢中,而不是將該學生加載到一個查詢中,並將該課程加載到另一個查詢中。