2010-03-04 40 views
6

我有一個JSF 2.0應用程序,我想開始添加驗證器。應用程序體系結構的基本概述如下。我應該在EJB 3.1,JSF2.0和JPA中使用Bean Validation嗎?

我有託管支持Bean,其中包含我的JPA註釋類和EJB的實例。 EJB負責事務性地訪問數據庫。 JPA註釋類是valuebound到我的facelets(並使用EJB的數據庫訪問)。

我想潛在地使用Bean驗證並編寫自定義約束,但是這意味着我必須將這些約束添加到我的JPA批註類中。在我看來,這似乎違反了我對問題的分離。 (與JPA註釋類/ DAO混合呈現/驗證)在這種情況下不使用Bean驗證更好嗎?我的結構是否有缺陷?有沒有這樣做的首選方式,我不知道?

謝謝!

回答

5

驗證是您的業務邏輯的一部分,因此必須出現在您的域模型中,這是您的持久性實體。所以將它們放在JPA實體中絕對沒有錯。

驗證不屬於演示文稿,因爲即使您更改了表示層(例如,您將在EJB上公開一些Web服務),驗證仍然需要在那裏。