【问题标题】:Should bean validation be performed on entities or controller DTOs? [closed]是否应该在实体或控制器 DTO 上执行 bean 验证? [关闭]
【发布时间】:2021-09-12 12:44:27
【问题描述】:

我有一个管理订单的应用程序。我有一个控制器,它接收一个 OrderDTO 来创建它,还有一个实体 Order,它被创建并传递给 OrderService 来保存它

我想验证这个订单有一些属性,我想知道,我应该在哪里使用 javax bean 验证注释?它们应该在控制器级别,还是在 OrderService 内部?

顺便说一句,我正在使用游戏框架

【问题讨论】:

标签: java hibernate validation javabeans


【解决方案1】:

通常,此类简单的 bean 验证定义在控制器层的 DTO 类中,以便在 API 请求时执行,以确保在调用服务层之前请求有效。检查play.data.validation.Validation

另一方面,实体可能会根据数据库约束进行 bean 验证,并且必须与控制器层完全隔离。

【讨论】:

  • dto 和实体的验证会有什么不同吗?我的 dto 本质上只是实体的副本。反正我可以直接用。例如,我有一个验证说数据库中不能存在具有相同代码的其他订单。那会在dto上吗?谢谢
  • 验证“数据库中不能存在具有相同代码的其他订单”肯定是数据库验证,必须在服务层进行。您必须在数据库表中的“代码”列中定义唯一约束,以确保没有重复的订单具有相同的代码。另外,在服务层查询数据库,如果发现有相同代码的订单,不要插入新的。
猜你喜欢
  • 2013-12-04
  • 2016-04-22
  • 2022-01-19
  • 1970-01-01
  • 2015-01-16
  • 2011-01-22
  • 1970-01-01
  • 2013-10-06
  • 2020-09-25
相关资源
最近更新 更多