hibernate验证器,json模式生成和使用常见约束

时间:2014-01-14 18:06:46

标签: jackson hibernate-validator

我们使用Spring MVC,Jackson用于json,Hibernate ORM。我们需要添加前端验证。我遇到了hibernate验证器。

我们有一组使用JPA注释的Domain类[DO classes]。 我们有另一组POJO类[DTO类]注释为Json绑定。

我们希望实施执行以下操作的基础架构:

  1. DTO类引用DO类约束[如果适用],以便真相是一个地方。
  2. 再次使用JPA注释生成json架构。
  3. 验证其余呼叫的输入。
  4. 例如,而不是以下内容:

    PersonDTO{
      @NotNull
        @Size(min=2, max=60)
        private String firstName;
    }
    

    怎么样:

    PersonDTO{
       @MapsTo(com.xyz.domain.PersonDO.firstName.Size) // referring to the JPA annotation
       private String firstName;
    }
    

    然后,自定义验证器通过查看JPA注释来确定要维护的约束。

    我概述的策略是一种典型的方法吗?任何反馈或意见表示赞赏。你能指点我相关的任何文章吗? 谢谢。

1 个答案:

答案 0 :(得分:0)

在Hibernate Validator中没有用于将约束从一个模型复制到另一个模型的开箱即用功能,但您可以使用现有API自行实现它。

更具体地说,有retrieving constraint metadata的API(由Bean Validation标准化)和运行时类型dynamically putting constraints的API(由Hibernate Validator提供)。您可以使用前者来读取域模型的约束,并使用后者驱动在DTO模型上创建等效约束。为此,您当然需要一种策略来匹配源模型和目标模型的相应类型和属性。