2012-09-27 83 views
0

我将图像存储在外部文件中,同时保留数据库记录中只有它们的路径。但是我想删除一个文件,如果适当的记录被删除。如何覆盖Hibernate中的删除?

我应该如何扩展删除行为与文件删除?

+0

在调用删除的服务方法中,您可以添加另一个也删除文件的方法吗? – Lyrion

+0

当然,我可以但这是正确的吗? –

+1

嗯,我想是的。因为如果出现问题时您将事务放在整个事物上,您总是可以回滚。跳过Peter提到的一些问题。 – Lyrion

回答

0

有多种问题:

  • 如果有什么文件不能被删除?数据库条目是否应该删除?
  • 如果交易失败怎么办?
  • 如果一个文件已被删除,该怎么办?

不能保存数据库本身的字节数据吗?

0

您可以使用Hibernate拦截器。

一般来说,你将不得不在类似的形式延伸EmptyInterceptor并覆盖方法

public void onDelete(Object entity, Serializable id, 
    Object[] state, String[] propertyNames, 
    Type[] types) { 

    System.out.println("onDelete"); 

    if (conditionOnFileDeletionIsMet()){ 
     deleteFile(); 
    } 
} 

更详细的例子是herehere。文档是here