2010-11-27 3 views
2

変更されていないエンティティがある場合、Hibernatesession.update(entity)SQLUPDATE文をデータベースサーバに送信しますか?Hibernateは変更されていないエンティティを更新しますか?

たとえば、次のコードでは、HibernateはSQL UPDATEをデータベースサーバーに送信しますか?

Session session = factory.openSession(); 
Person me = new Person(null, "Derek Mahar"); 
session.save(me); 
Person me2 = new Person(me.getId(), "Derek Mahar"); 
session.update(me2); 
session.flush(); 
+0

これはクイズですか? – cherouvim

+0

オブジェクトがまだセッションに接続されている場合でも更新は機能しますか? 'update()'のAPIは、永続インスタンスを指定されたdetachedインスタンスで更新することを示します。 – kraftan

+0

クラフトン、私はあなたが正しいかもしれないと思います。ドキュメントによると、この例では例外がスローされます。この例を変更して、オリジナルと同じIDを持つデタッチされたインスタンスを更新します。 –

答えて

6

厳密に言えば、HibernateはupdateでSQLアップデートを送信しません。 updateは、現在のセッションでオブジェクトを更新するだけです。 Hibernateは、セッションがフラッシュされたときにクエリを実行します。

+0

Bozho、あなたは正しいですが、私の質問は、最後の更新後にセッションのフラッシュを前提としていました。私の質問はこの点については明示的ではありませんでしたので、明示的な最終的な 'flush()'を含めるようにコード例を修正しました。 –

+0

私の答えは(まだ) "いいえ"残りは追加情報だった:) – Bozho

関連する問題