2012-09-27 134 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