2012-08-07 156 views
1

一般問題:使用數據庫連接的JSR303驗證

這是使用JSR303的bean驗證,Hibernate的參考實現。

假設我有一組自定義驗證;其中一些需要數據庫連接(注意:我們沒有使用Hibernate進行數據庫元素映射,所以不幸的是這不是一個選項)。例如,我可能想要在持續之前驗證一個foriegn密鑰。

無論如何,在將數據庫連接傳遞到Validator.validate(obj)方法時,我無法看到一種方法,以便使其可用於驗證實現。出於會話一致性原因,該連接與調用代碼中使用的連接相同是很重要的。

任何想法..?我真正需要的是一種獲取任何類型的運行時值到驗證器實現中的方法。

感謝,

安迪

回答

1

你可以創建一個自定義ConstraintValidatorFactory來實例化和配置ConstraintValidator對象。該工廠可以將所需的依賴關係(如數據庫連接)傳遞給創建的約束驗證器。

如果您使用CDI來連接您的應用程序,您可能會對基於CDI的驗證程序提供依賴注入Seam Validation(免責聲明:我是作者)感興趣。如果您使用的是Spring Framework,您還可以在約束驗證器實現中使用依賴注入的make use

相關問題