服务层中的hibernate / spring验证

时间:2010-11-25 11:37:17

标签: java design-patterns architecture

---添加(编辑) -

您是否应该在服务层进行验证,即使您在前端进行验证?

例如struts有验证,所以你可以验证它。 (我不是指java脚本验证。)

-

您是否在服务层中使用了hibernate验证器或弹簧验证,即使您已经在前端进行了验证?

(前端验证不必是休眠或弹簧验证)

4 个答案:

答案 0 :(得分:1)

一致的数据是Enterprice Applications中最重要的事情之一!

所以是的:您需要检查两次:在前端和服务层。

在我们的网络应用程序中,我们在不同级别进行不同的检查: (我不是在谈论不一致的检查,我说的是粒度和检查范围。)

  1. 输入字段的Java脚本检查(最大长度,不为空......)
  2. 与(1)相同的检查以及服务器端Web控制器中的一些更复杂的检查
  3. 在实体和服务中检查会破坏应用程序逻辑的重要(有时是复杂的)约束
  4. 数据库可以轻松检查的所有内容(非空,外键,唯一)都由数据库约束检查。
  5. IHO最好检查所有和所有地方,但这是不可能的。因此,您需要一个一致的策略来检查什么。此政策在很大程度上取决于您正在开发的应用程序类型。

答案 1 :(得分:0)

你的问题不够具体,即它不能解决单个问题(更多的是民意调查)。

要回答更具体的问题“你是否应该在服务层进行验证,即使你在前端进行验证?”,答案是绝对的。几乎所有的前端验证,特别是对于Web应用程序,都可以被绕过。您的服务应该实现适当的验证,以确保它们是一致的,不应该依赖于用户空间中的验证(如Javascript检查),因为它们很容易被击败。

更新:当决定在代码的前端(调度程序/控制器)和服务层之间进行验证时,我会说没有硬性规定。我可能会检查我们收到的输入在前端是否合理,并在服务层进行域级验证。

答案 2 :(得分:0)

我们将它与wicket结合使用作为fronend框架。您必须考虑需要分两步验证:

  1. 验证输入,例如:是否为整数
  2. 验证业务逻辑
  3. 我们使用业务验证解决了问题,以便在wicket中进行验证。所以你不必两次编写代码。

答案 3 :(得分:0)

我强烈建议您使用Hibernate Validator并将所有验证保留在模型中。它很好地促进了Oops封装,因为该模型现在可以验证自己。

相关问题