27

Hibernate がトランザクションの最後にダーティ オブジェクトを自動的に保存することを知って非常に驚きました。

dao.save(object)

このスレッドで説明されている状況を念頭に置いています

私の質問は次のとおりです。この動作を無効にする方法はありますか? 一見すると、この自動保存はかなり危険に思えます。セッションに接続されているオブジェクトと接続されていないオブジェクトを知る必要があり、誤って何かを保存するのは非常に簡単に思えるからです。この自動保存アプローチの利点を教えてください。ほとんど見かけません。何かを更新するには、常に明示的に dao.save(object) を呼び出したいと思います。

sessionFactory で entityInterceptor を使用するという 1 つの回避策があると聞きました。このカスタム entityInterceptor は、findDirty メソッドをオーバーライドして、ダーティなものを見つけないようにしますが、そのような場合、dao.save も機能しないと思います。何か案は?

4

2 に答える 2

4

自動状態管理を無効にするには、セッションのフラッシュ モードを MANUAL に設定します。その後、 session.flush() を呼び出して、セッションに関連付けられたすべてのダーティ エンティティを実際に書き出すことができます。

于 2012-10-13T20:34:53.157 に答える