2013-04-26 65 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