javax 验证器和 hibernate 验证器是如何相关的(如果它们是)?有什么区别?

How are javax validator and hibernate validator related(if they are)? and what is the difference?

我问的问题可能真的很简单(甚至很愚蠢)。

我在 spring-hibernate MVC 应用程序中使用验证。我正在使用来自 javax.validation 包的约束,例如@NotNull、@Pattern。当我使用诸如 @Email 之类的约束时,它是从 org.hibernate.validator.constraints 导入的。在验证器 class 中,我使用了 ValidatorFactory 和其他 classes 或接口(例如 Validation,Validator),所有这些都来自 javax.validation。我对此感到非常困惑。

然后我开始深入了解 javax 验证器和 hibernate 验证器包到底是什么,显然它们是 JSR303 的实现。

为了验证,我使用

ValidatorFactory validatorFactory = Validation.buildDefaultValidatorFactory();

为了让我更加困惑,我阅读了另一种实例化 ValidatorFactory 的方法,它是这样的 -

ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class).configure().buildValidatorFactory();

而且效果很好!

请帮助我更好地理解这两个。

感谢您的帮助。

作为一大堆东西Java(安全,JDBC,JPA等等),有一个标准,调用bean validation,它定义了接口和标准 类(即 javax.validation 类),您可以在这些 类 和接口的几种实现之间进行选择(hibernate 验证器就是其中之一) ).

The landing page of hibernate validator 告诉它:

Hibernate Validator 5.x is the reference implementation Bean Validation 1.1!