2011-10-25 50 views
3

我知道這是一個很多時候被描述的常見問題。 但我仍然無法得到一些東西 - 性能呢?哪種方法更快?其實,我需要一個簡單的東西:頁面發出一個POST請求:id = 0,name ='John'。服務器端腳本應檢查id = 0,然後在數據庫中創建新記錄,否則更新現有。休眠:加載vs得到

我認爲get()對我來說更有用,因爲它將在DB中不存在記錄時返回NULL,而load()可以返回一些temproray對象。 謝謝

+0

這將取決於很多事情。可能大部分是底層數據庫。還有什麼比例找到/未找到?從你的公式看,聽起來好像你期望很多「錯過」。 – vidstige

+0

found/not found意味着具有這樣的id的記錄實際存在於DB中。比方說,我需要一些獨特的方式來檢查記錄是否存在於數據庫中(通過load()或get()方法),但不以犧牲性能爲代價 – nKognito

+0

此描述非常清晰http://gmarwaha.blogspot。 com/2007/01/hibernate-difference-between-sessions.html –

回答

6

下面是Hibernate的論壇,在我的谷歌查詢的第一個結果(Hibernate load vs get)等效問題的鏈接:https://forum.hibernate.org/viewtopic.php?p=2387456

有其規定如下:

的load()方法較舊;由於用戶 請求,get()被添加到Hibernate的API中。差異是微不足道的:

如果load()無法在緩存或數據庫中找到對象,則拋出異常 。 load()方法永遠不會返回null。如果找不到對象,則get()方法返回 。

+0

我看到了這個話題。問題更像是:load()方法更快,然後get()?或者反之亦然 – nKognito

+0

@nKognito考慮到Hibernate 3.4源代碼沒有太大的區別。實際上,只是在上述檢查的不同點上調用相同的方法。 – Thomas

+1

所以我們可以說方法得到的速度更快,因爲沒有必要爲這個塊試一試。 –