Hibernate中是否有某些“正在删除”操作由例如触发孤儿或其等同物?

时间:2013-02-13 15:57:54

标签: hibernate file storage orphan

我的模型SomeFileModel包含对存储在磁盘上的文件的引用。我想将该文件与实体一起保存并立即删除它们。虽然前者并不困难,但问题在于后者:SomeFileModel与另一个模型FilesCollectionModel多对一关联,并使用orphanRemoval = true进行注释。

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

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

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

1 个答案:

答案 0 :(得分:1)

是的,简短回答是Interceptors and Events

根据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.