Hibernate JPA中的不同验证

Hibernate JPA中的不同验证,hibernate,jakarta-ee,bean-validation,Hibernate,Jakarta Ee,Bean Validation,我正在使用hibernate实现和JSF2.0将一个项目转换为JPA2.0。旧项目中有一些注释,如@Length(min=3)和@NotNull,它们是从org.hibernate.validator.Length导入的;和org.hibernate.validator.NotNull 在新项目中,我有两个选择。第一个选择,我仍然可以使用@Length(min=3),但与org.hibernate.validator.constraints的导入略有不同。;(不使用来自org.hibernate

我正在使用hibernate实现和JSF2.0将一个项目转换为JPA2.0。旧项目中有一些注释,如@Length(min=3)和@NotNull,它们是从org.hibernate.validator.Length导入的;和org.hibernate.validator.NotNull

在新项目中,我有两个选择。第一个选择,我仍然可以使用@Length(min=3),但与org.hibernate.validator.constraints的导入略有不同。;(不使用来自org.hibernate.validator.Length的旧导入)。第二个选择,我可以将它们转换为@Size(min=3)和@NotNull 并使用import javax.validation.constraints

有人能告诉我这些导入文件的不同验证(@Length@Size@NotNUll)吗 org.hibernate.validator* org.hibernate.validator.constraints。; javax.validation.constraints


我搞不清楚哪个是属于哪个实现和版本的,我应该选择哪个。

从版本4和更高版本开始,Hibernate Validator是Bean验证规范(JSR 303/349)的参考实现。
javax.validation.constraints
@Size
@NotNull
等)中定义的约束由本规范定义,可在Bean验证提供程序(如Hibernate Validator)之间移植


Hibernate Validator 4.x仍然提供
@Length
约束,以简化从3.x版的迁移,但是如果您更喜欢单独使用标准化API,您应该选择
@Size
等。

感谢您的回复,据我所知,JPA和beans验证是规范,Hibernate和Hibernate验证是参考实现。当我使用javax.validation.constraints时,仍然有一个不清楚的部分,它意味着什么样的引用实现?org.hibernate.validator(参考实现)如何。如果第二个是hibernate的引用实现,那么第一个是什么?JPA是持久性领域的规范。Hibernate ORM是它的一个实现,但不是参考实现(EclipseLink)。Bean验证是验证领域的一个规范,Hibernate Validator是参考实现。包
javax.validation.constraints
及其类型由Bean验证规范定义,而相应的约束验证器由Hibernate Validator等实现提供。这回答了您的问题吗?
javax.validation.constraints
Java7参考