2014-10-05 31 views
0

我打算創建一個自定義驗證模型,該模型依賴於Hibernate的Pre和Post Listener。自定義Hibernate業務驗證模型:可能的風險

每個驗證類應包含一個業務規則(不是輸入檢查),在執行插入,更新或刪除操作之前需要檢查該規則。 這就是爲什麼它取決於聽衆如PreInsertEventListener,PreUpdateEventListenerPreInsertDeleteListener

驗證類有時需要檢查數據庫中的某些內容。我讀過其他帖子,建議不要插入或更新Listener中的內容?但我打算只做只讀通話。

要恢復:

  • 驗證類是關係到一個特定的實體;
  • Validaton類由Hibernate Listener調用;
  • 驗證類可能會在DB中執行一些「只讀」調用;
  • 驗證類在相同的Hibernate中執行SessionTransaction;
  • 當規則不滿足時,會拋出一些RuntimeException導致當前的回滾Transaction;

這個概念的優點是所有的業務規則都可以放在與一個實體特別相關的驗證類中。這避免了業務規則分散在不同的服務上。

您如何看待這種方法?是否有任何缺點/風險(特別是Hibernate相關),我需要照顧?

回答

0

我認爲這裏最重要的是預測你的驗證規則只會針對持久化的實體。它很有可能會遇到需要來自父/子實體的數據來驗證或提取相關數據的情況。

遍佈不同服務的業務規則是一個真實的世界案例,通常用於驗證您需要調用不同服務的實體。例如,如果您想要堅持一個賬戶的借記交易,您想驗證賬戶持有者是否存在,賬戶處於有效狀態&賬戶有足夠的餘額。