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

时间:2017-09-22 07:26:33

标签: java hibernate validation javax

我提出的问题可能非常简单(甚至是愚蠢的)。

我在spring-hibernate MVC应用程序中使用验证。我正在使用来自javax.validation包的@NotNull,@ Pattern等约束。当我使用@Email这样的约束时,它是从org.hibernate.validator.constraints导入的。在验证器类中,我使用ValidatorFactory和其他类或接口(例如Validation,Validator),所有这些都来自javax.validation。我真的很困惑。

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

要验证,我使用

ValidatorFactory validatorFactory = Validation.buildDefaultValidatorFactory();

为了进一步混淆我,我又读了一个实例化ValidatorFactory的方法,就像这样 -

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

它工作正常!

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

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

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

The landing page of hibernate validator告诉它:

  

Hibernate Validator 5.x是参考实现Bean Validation 1.1!