【问题标题】:Validation of entities实体验证
【发布时间】:2020-06-16 15:40:01
【问题描述】:

Spring Data JDBC 是否在持久化时验证实体 - 正如 Spring Data JPA 在休眠的帮助下所做的那样?

我有这种情况:

  • 实体(或多或少是实际数据库表的副本)
  • EntityDto(数据传输对象)具有验证约束,例如 @NotEmpty@Min(5)
  • Web 层 (Spring MVC),其中 DTO 事物由 spring 东西验证。

鉴于这种结构并假设 Spring Data JDBC 不进行验证 - 除了 @Id 之外,我不需要实体中的其他注释吗?

【问题讨论】:

    标签: validation spring-data-jdbc


    【解决方案1】:

    Spring Data JDBC 不进行验证。

    将来也不会,因为验证与持久性是正交的。

    是的,在所描述的情况下,@Id 注释可能就是您所需要的。 虽然我建议有一个使用@Version 的专栏来启用乐观锁定。

    我不是 Bean Validation 的忠实粉丝。验证应该在构造函数中进行,这样一开始就不可能创建一个无效的对象。 Spring Data JDBC 支持这一点,因为它支持非平凡的构造函数。

    【讨论】:

    • 我也喜欢在构造函数中完成验证的想法。在我的大多数情况下,我都有一个 Web 表单,我通过 thymeleaf/Spring Mvc 将 dto 绑定到 html 输入字段。当我通过 http 将此表单发布回服务器时,Spring Mvc 构造模型(通过标准(无 args)构造函数)并通过设置器将值设置回 dto(据我所知)。如果 Spring Mvc 可能调用重载的构造函数会很酷。你知道这是否已经偶然发生了吗?
    • 我使用 Spring MVC 已经很久了,但我希望它使用非默认构造函数,因为 Spring Frameworks 依赖注入也支持这一点。
    猜你喜欢
    • 2011-03-20
    • 1970-01-01
    • 1970-01-01
    • 2021-07-24
    • 1970-01-01
    • 2010-09-16
    • 2018-12-07
    • 2021-01-09
    • 1970-01-01
    相关资源
    最近更新 更多