0

SomeFileModelディスクに保存されているファイルへの参照を含むモデルがあります。そのファイルをエンティティと一緒に保存し、両方を一度に削除したいと思います。前者は難しくありませんが、後者には問題があります。SomeFileModel別のモデルFilesCollectionModelと多対 1 の関係にあり、注釈が付けられていorphanRemoval = trueます。

責任のあるサービスSomeFileModelがそのファイルを削除する間、エンティティの破棄を注文すると、他のサービスは(予想どおり)それを行いません。もちろん、すべてのモデルにprepareDeleteion()カスケードによって呼び出される何らかのメソッドを持たせることはできますが、それが最善の方法だとは思いません。

私の質問は次のとおりです。エンティティの削除時に呼び出されるように、メソッドをマークする注釈またはその他の規則はありますか? それは可能ですか?または、データベース内の参照なしでファイルを削除する「孤立ファイルコレクター」や、醜いカスケードメソッド呼び出しなど、他のソリューションを使用する必要がありますか? どのようなアプローチが最適でしょうか?

それが役立つ場合は、Hibernate 4 と Spring Framework 3.1.0 を使用します。

4

1 に答える 1

1

はい、短い答えは インターセプターとイベントです

Hibernate docs に従って:

インターセプター:

 The Interceptor interface provides callbacks from the session to the app, 
 allowing the application to inspect and/or manipulate properties of a
 persistent object before it is saved, updated, deleted or loaded.

イベント :

The event system can be used in addition, or as a replacement, for interceptors.
All the methods of the Session interface correlate to an event.
You have a LoadEvent, a FlushEvent, etc. 
于 2013-02-13T16:44:10.617 に答える