什么是防止在创建约束约束之前检查约束的最佳机制?实体的修改?
假设“用户”实体具有“ loginid”作为唯一约束,明智的做法是在创建或修改之前检查是否已存在具有该loginid名称的用户条目。
要么
您是否要让数据库抛出ConstraintViolationException并在UI层中适当地处理此消息。在jboss接缝框架中应在哪里执行此类检查。
注意:目前,没有对seam-gen代码强制执行此类检查。
当前,我们将Seam 2.2,Richfaces与Hibernate结合使用。
即使您在保留用户对象之前检查代码中的条件,也始终有机会在您检查的时间和保留新用户之间有人创建重复的登录ID。
但是,如果您进行显式检查,则在UI中显示适当的错误消息会更加容易。如果您在表上有多个约束,则捕获ConstraintViolationException不会使您轻松确定违反了哪个约束。
所以我会两者都做。假设您要从Seam的EntityHome扩展:
编辑
正如Shervin提到的那样,创建一个JSF验证器是一个好主意(取代上面的#1),但是您仍然应该期待最差的情况并捕获ConstraintViolationException。