2011-12-14 7 views
0

私は、(変更されていなくても)エンティティのすべてのフィールドではなく、変更されたエンティティのフィールドのみをデータベースに更新するようにhibernateを構成できることを知っています。これがデフォルトの動作です。Hibernate dynamic-update

私の質問は、なぜ後でデフォルトの動作ですか、変更されたフィールドだけを更新するのはデフォルトの動作ではないはずですか?

さらに、修正されていないフィールドの更新をサポートするのはなぜですか?変更されていないフィールドを更新する理由はありますか?

+0

[Hibernate dynamic-update = false]の可能な複製(http://stackoverflow.com/questions/4709293/hibernate-dynamic-update-false) – axtavt

答えて

3

私の質問は、なぜ、後にデフォルトの動作であり、それだけで変更されたフィールドを更新するために、デフォルトの動作であること べきではないですか?

変更されたフィールドのみを更新すると、大部分のビジネスロジックでアプリケーションによって膨大な数のプロパティが変更される場合、コストが高くなります。これにはダーティーチェック(変更されたフィールドを識別する別の選択クエリ)が含まれています。この動的更新は、20のフィールドがあり、少数のフィールドしか変更されていない場合に有効です(パフォーマンスを向上させる実行のためにDML文に追加できる列はほとんどないため)。 50%以上のフィールドが変更されている場合は、すべてのプロパティを更新するとよいでしょう。したがって、変更されたフィールドのみを更新するかどうかを決定するための選択肢が開発者に与えられます。

私の入力は、これを理解するのに役立ちます。私が間違っている場合、専門家は私を修正してください。