hibernate中不必要的sql update問題

jvcoffee發表於2009-07-28
hibernate in action第二版中有一段是這麼說明的:
"從獲取方法返回一個不同的物件,通常比由hibernate傳遞到設定方法的物件來的安全。hibernate按值比較物件--不是按物件的同一性--來確定一個屬性的持久化狀態是否需要被更新"
下面用程式碼來說明一下:(比如一個user類)

public class User implements serilizable{
    private String name;

    public void setName(String name){
        this.name = name;
    }

    //所說建議的寫法,這麼寫就不會導致不必要的sql update
    public String getName(){
        return new String(name);
    }

    //而大部分通常的寫法是
    public String getName(){
        return this.name;
    }
}
<p class="indent">

比較迷惑的問題是:
1、如果"物件的同一性"相等的話,那麼equals(按值比較)必定相等,這和是否產生不必要的更新有什麼因果關係?
2、如果按照他的邏輯,確實可以對效能有少許提升,但是豈不是有點浪費記憶體了?



[該貼被jvcoffee於2009-07-28 17:19修改過]

相關文章