0

我的模型SomeFileModel包含对存储在磁盘上的文件的引用。我想将该文件与一个实体一起保存并同时删除它们。虽然前者并不难,但问题来自后者:SomeFileModel与另一个模型多对一关系,FilesCollectionModel并用orphanRemoval = true.

虽然负责SomeFileModel删除该文件的服务,但当我们下令销毁实体时,其他服务(正如预期的那样)不会这样做。当然,我可以让所有模型都有一些prepareDeleteion()方法,可以通过级联调用,但我认为这不是最好的方法。

我的问题是:是否有一些注释或其他约定可以标记方法,以便在实体删除时调用?它甚至可能吗?或者我应该使用其他一些解决方案,例如“孤立文件收集器”,它会删除数据库中没有引用的文件,或者那个丑陋的级联方法调用?什么方法是最好的?

如果有帮助,我会使用 Hibernate 4 和 Spring Framework 3.1.0。

4

1 回答 1

1

是的,简短的回答是 拦截器和事件

根据休眠文档:

拦截器

 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 回答