2013-04-26 64 views
1

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

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

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

我很困惑哪一个属于哪个实现和版本,哪一个我应该去找它。

回答

0

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

Hibernate验证4.x版仍提供@Length约束,以简化从3.x版本迁移,但如果你喜欢只使用标准的API,你应该去@Size

+0

感谢您的回复,我理解JPA和bean验证是规范,Hibernate和Hibernate验证是参考实现。当我使用引用实现的javax.validation.constraints时,对我来说还有一个不明确的部分,它意味着什么?怎么样org.hibernate.validator(哪个参考实现)。如果第二个是hibernate的引用实现,那么第一个是什么? – Yashar 2013-04-29 13:33:54

+1

JPA是持久性领域的规范。 Hibernate ORM是它的一个实现,但不是参考实现(即EclipseLink)。 Bean Validation是验证领域的规范,Hibernate Validator是参考实现。包'javax.validation.constraints'及其类型由Bean Validation规范定义,而相应的约束验证器由诸如Hibernate Validator之类的实现提供。这是否回答你的问题? – Gunnar 2013-04-30 08:40:01