3.2.2.12. 移植到 Hibernate Validator 4


介绍

Hibernate Validator 4.x 采用了完全新的代码,它实现了 JSR 303 - Bean Validation。从 Validator 3.x 到 4.x 的移植过程非常直观,但在移植时您必须进行一些修改。

过程 3.17. 您可能需要执行一个或多个下面的任务:

  1. 访问默认的 ValidatorFactory

    JBoss EAP 6 捆绑了一个默认的 ValidatorFactory 到 java:comp/ValidatorFactory 下的 JNDI 上下文。
  2. 理解生命周期触发的检验

    和 Hibernate Core 4 一起使用时,Hibernate Core 将自动启用基于生命周期的检验。
    1. 检验发生在实体 INSERTUPDATEDELETE 操作上。
    2. 您可以配置组通过使用下列属性的事件类型来检验:
      • javax.persistence.validation.group.pre-persist
      • javax.persistence.validation.group.pre-update,和
      • javax.persistence.validation.group.pre-remove
      这些属性的值是用逗号隔开的、要检验的组的全限定类名。
      Validation 组是 Bean Validation 规格的一个新功能。如果您不想利用这个功能,移植到 Hibernate Validator 4 时无需进行任何修改。
    3. 您可以设置 javax.persistence.validation.mode 属性为 none 来禁用基于生命周期的检验。这个属性的其他值还有 auto(默认值),callbackddl
  3. 配置您的应用程序以使用手动检验

    1. 如果您想手动控制检验,您可以用下列方法创建一个 Validator:
      • getValidator() 方法从 ValidatorFactory 创建一个 Validator 实例。
      • 注入 Validator 实例到 EJB、CDI Bean 或其他 Java EE 可注入的资源。
    2. 您可以使用 ValidatorFactory.usingContext() 返回的 ValidatorContext 来定制您的 Validator 实例。使用这个 API,您可以配置一个自定义的 MessageInterpolatorTraverableResolverConstraintValidatorFactory。Bean Validator 规格里指定了这些接口,在 Hibernate Validator 4 里它们是新的接口。
  4. 修改代码以使用新的 Bean Validation 约束

    当移植到 Hibernate Validator 4 时新的 Bean 级别的检验约束需要修改代码。
    1. 要升级到 Hibernate Validator 4,您必须使用下列包里的约束:
      • javax.validation.constraints
      • org.hibernate.validator.constraints
    2. Hibernate Validator 3 里所有的约束在 Hibernate Validator 4 里仍然可用。要使用它们,您需要导入指定的类,且在某些情况下,修改其约束参数的名称或类型。
  5. 使用自定义的约束

    在 Hibernate Validator 3 里,自定义的约束需要实现 org.hibernate.validator.Validator 接口。 在 Hibernate Validator 4 里,您需要实现 javax.validation.ConstraintValidator 接口。这个接口包含了和以前接口相同的 initialize()isValid() 方法,但方法签名有了变动。此外,Hibernate Validator 4 不再支持 DDL 修改。
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部