1

假设您有一个 DB 实体类 MyClass 的实例。您在此实体中有 3 个字段都标记为“不能为空”填充 3 个字段。在这种情况下,最佳做法是什么。MyClass 中的构造函数、setter 方法是否应验证所有字段是否正确,如果没有抱怨。或者您是否允许创建无效对象并让 DB 层进行抱怨?

4

1 回答 1

4

1)您应该防止客户端提交无效数据

2)即使你做了1,你仍然需要在服务器上验证——人们会用curl和wget尝试古怪的东西......

3)我会在服务层检查传入的数据是否有效。如果不是,我会向客户端返回某种错误代码,甚至不进行保存。对于简单的情况,我会validate在我的域类上有一个方法。对于复杂的情况,我会创建一个服务方法来进行验证,例如,在我需要根据数据库中的数据检查提交的数据的情况下。没有一种正确的方法可以进行涵盖所有情况的验证。

保存和捕获异常的问题是很难将此错误与可能发生的其他错误区分开来。另外,测试验证代码很容易,并且服务在验证失败时会做正确的事情。另外,验证逻辑是业务规则,能够轻松测试您的业务规则总是好的。

于 2012-07-25T15:05:34.107 回答