我应该在EJB 3.1,JSF2.0和JPA中使用Bean Validation吗?

问题描述:

我有一个JSF 2.0应用程序,我想开始添加验证器。应用程序体系结构的基本概述如下。我应该在EJB 3.1,JSF2.0和JPA中使用Bean Validation吗?

我有托管支持Bean,其中包含我的JPA注释类和EJB的实例。 EJB负责事务性地访问数据库。 JPA注释类是valuebound到我的facelets(并使用EJB的数据库访问)。

我想潜在地使用Bean验证并编写自定义约束,但是这意味着我必须将这些约束添加到我的JPA批注类中。在我看来,这似乎违反了我对问题的分离。 (与JPA注释类/ DAO混合呈现/验证)在这种情况下不使用Bean验证更好吗?我的结构是否有缺陷?有没有这样做的首选方式,我不知道?

谢谢!

验证是您的业务逻辑的一部分,因此必须出现在您的域模型中,这是您的持久性实体。所以将它们放在JPA实体中绝对没有错。

验证不属于演示文稿,因为即使您更改了表示层(例如,您将在EJB上公开一些Web服务),验证仍然需要在那里。