【问题标题】:Validation where to organize in web app for more efficient way验证在 Web 应用程序中组织的位置以获得更有效的方式
【发布时间】:2013-07-05 21:52:15
【问题描述】:

我正在考虑验证我的 Web 应用程序。这是方法。 1) 使用 Spring Validator 实现接口进行验证 2)在领域模型上使用JSR-303。

第一种方法看起来更好,因为我可以使用消息来呈现任何语言的错误,并且可以执行更复杂的逻辑。但是hibernate docs显示JSR-303比hibernate更可取,我想我已经用注释映射识别了我的实体,并为验证JSR 303投入了更多,它不会太多吗?如果可能的话,也许我应该在两者上都这样做。

你有什么建议?谢谢

【问题讨论】:

  • 为什么不同时使用?据我所知,一个与另一个相得益彰。

标签: spring hibernate validation bean-validation


【解决方案1】:

就我个人而言,我认为 Web(或输入)验证与持久性验证非常不同。通常它们是相同的,但通常它们不会相同,除非您的应用只获取数据并放入数据库中,除了验证之外不做任何其他事情。

如果您将持久性和输入验证混合在一起,您的域模型将受到影响,因为您将尝试将其混合为表示+域模型,并且其中一个的更改会影响另一个(再见,再见局部性)。

在一个非常简单的应用程序上或者如果您正在构建“裸对象”解决方案(在这种情况下输入必须是域),混合验证可能是可行的。

【讨论】:

  • 是的。问题是在我使用 sql 脚本创建模型数据模式并使用 spring 验证作为我的应用程序的输入、消息等验证之前,我对模型数据使用验证。现在我决定我想在 hibernate 启动时创建我的模式.
  • 从 hibernate 创建模式通常也是一个坏主意,原因如下: 1) 您仍然需要更新脚本(不要让 hibernate 升级数据库模式!)。 2)通常数据库在创建模式时提供了更多的灵活性,例如您可以创建不同类型的索引,或者将数据存储在数据库的不同分区中,等等。正如我之前提到的,如果您正在构建的应用程序很小并且不适合生产使用,那么这是可以的。
  • 谢谢。我也在考虑这个。
猜你喜欢
  • 1970-01-01
  • 2011-09-09
  • 1970-01-01
  • 1970-01-01
  • 2020-10-21
  • 2010-10-05
  • 1970-01-01
  • 1970-01-01
  • 2016-07-08
相关资源
最近更新 更多