日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

在Java SE中使用Hibernate Bean Validator

發布時間:2023/12/3 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 在Java SE中使用Hibernate Bean Validator 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Bean Validation主頁上指出:“ Bean Validation是Java規范,…在Java SE中運行,但集成在Java EE(6和7)中。” 這篇文章演示了如何在Java EE容器之外使用Java Bean驗證參考實現( Hibernate Validator )。 這篇文章中的示例基于Hibernate Validator 5.1.3 Final ,可從http://hibernate.org/validator/downloads下載。

“ Hibernate Validator入門 ”指出,Hibernate Validator需要統一表達語言 ( JSR 341 )和上下文和依賴項注入 ( CDI / JSR 346 )的實現。 這些規范的實現可在符合Java EE的現代容器(應用程序服務器)中使用,但是在Java SE環境中使用Hibernate Validator需要采購和使用單獨的實現。

“ Hibernate Validator入門”頁面提供了一種Maven XML,可以用來識別對Expression Language API (我正在使用Expression Language 3.0 API ), Expression Language實施 (我正在使用Expression Language Implementation 2.2.6 )的依賴性。 ,以及Hibernate Validator CDI便攜式擴展 (我正在使用Hibernate Validator便攜式擴展5.1.3 Final )。 我還使用Bean Validation API 1.1.0 Final , JBoss Logging 3.3.0 Final和ClassMate 1.2.0來構建和運行示例。

本文中演示的bean驗證示例定義了三個Java類。 Car.java是從“ Hibernate Validator入門 ”頁面上提供的示例改編而成的一類,接下來顯示其代碼清單。

汽車.java

package dustin.examples;import javax.validation.constraints.Min; import javax.validation.constraints.NotNull; import javax.validation.constraints.Size;/*** Example adapted from "Getting Started with Hibernate Validator"* (http://hibernate.org/validator/documentation/getting-started/).*/ public class Car {@NotNullprivate String manufacturer;@NotNull@Size(min = 2, max = 14)private String licensePlate;@Min(2)private int seatCount;public Car(final String manufacturer, final String licencePlate, final int seatCount){this.manufacturer = manufacturer;this.licensePlate = licencePlate;this.seatCount = seatCount;}public String getManufacturer(){return manufacturer;}public String getLicensePlate(){return licensePlate;}public int getSeatCount(){return seatCount;}@Overridepublic String toString(){return "Car{" +"manufacturer='" + manufacturer + '\'' +", licensePlate='" + licensePlate + '\'' +", seatCount=" + seatCount +'}';} }

Garage.java定義了Garage.java示例中使用的另一個類, Garage.java主要是Car的多個實例的包裝。 它的主要目的是幫助說明Hibernate Bean Validator支持的遞歸驗證。

車庫.java

package dustin.examples;import javax.validation.Valid; import javax.validation.constraints.Size;import java.util.Collections; import java.util.HashSet; import java.util.Set;/*** Holds cars.*/ public class Garage {@Size(min = 1)@Validprivate final Set<Car> cars = new HashSet<>();public Garage() {}public void addCar(final Car newCar){cars.add(newCar);}public Set<Car> getCars(){return Collections.unmodifiableSet(this.cars);} }

上面列出的Garage代碼使用@Valid批注指示也應驗證該類持有的Car實例(“驗證級聯”)。

本文的示例中使用的最后一個Java類是將實際執行兩個帶bean驗證注釋的類Car和Garage驗證的類。 該類的清單如下所示。

HibernateValidatorDemonstration.java

package dustin.examples;import static java.lang.System.out;import javax.validation.ConstraintViolation; import javax.validation.Validation; import javax.validation.ValidatorFactory; import javax.validation.Validator; import java.util.Set;/*** Demonstrate use of Hibernate Validator.*/ public class HibernateValidatorDemonstration {private final Validator validator;public HibernateValidatorDemonstration(){final ValidatorFactory factory = Validation.buildDefaultValidatorFactory();validator = factory.getValidator();}public void demonstrateValidator(){final Car nullManufacturerCar = new Car(null, "ABC123", 4);final Set<ConstraintViolation<Car>> nullMfgViolations = validator.validate(nullManufacturerCar);printConstraintViolationsToStandardOutput("Null Manufacturer Example", nullMfgViolations);final Car nullLicenseCar = new Car("Honda", null, 3);final Set<ConstraintViolation<Car>> nullLicenseViolations = validator.validate(nullLicenseCar);printConstraintViolationsToStandardOutput("Null License Example", nullLicenseViolations);final Car oneSeatCar = new Car("Toyota", "123ABC", 1);final Set<ConstraintViolation<Car>> tooFewSeatsViolations = validator.validate(oneSeatCar);printConstraintViolationsToStandardOutput("Too Few Seats Example", tooFewSeatsViolations);final Car oneDigitLicenseCar = new Car("General Motors", "I", 2);final Set<ConstraintViolation<Car>> tooFewLicenseDigitsViolation = validator.validate(oneDigitLicenseCar);printConstraintViolationsToStandardOutput("Too Few License Digits Example", tooFewLicenseDigitsViolation);final Car nullManufacturerNullLicenseCar = new Car(null, null, 4);final Set<ConstraintViolation<Car>> nullMfgLicenseViolation = validator.validate(nullManufacturerNullLicenseCar);printConstraintViolationsToStandardOutput("Null Manufacturer and Null License Example", nullMfgLicenseViolation);final Garage garage = new Garage();final Set<ConstraintViolation<Garage>> noCarsInGarage = validator.validate(garage);printConstraintViolationsToStandardOutput("No Cars in Garage", noCarsInGarage);garage.addCar(oneDigitLicenseCar);garage.addCar(oneSeatCar);garage.addCar(nullManufacturerNullLicenseCar);final Set<ConstraintViolation<Garage>> messedUpCarsInGarage = validator.validate(garage);printConstraintViolationsToStandardOutput("Messed Up Cars in Garage", messedUpCarsInGarage);}private <T> void printConstraintViolationsToStandardOutput(final String title,final Set<ConstraintViolation<T>> violations){out.println(title);for (final ConstraintViolation<T> violation : violations){out.println("\t" + violation.getPropertyPath() + " " + violation.getMessage());}}public static void main(final String[] arguments){final HibernateValidatorDemonstration instance = new HibernateValidatorDemonstration();instance.demonstrateValidator();} }

上面的代碼具有對javax.validation.Validator.validate(T,Class <?>)的多次調用,這些調用演示了對正在驗證其實例的類的注釋的有效性。 幾個示例驗證對象的單個驗證沖突,一個示例驗證對象的多個驗證沖突,最后一個示例演示成功的級聯沖突檢測。

HibernateValidatorDemonstration類具有main(String[])函數,可以在Java SE環境中執行該函數(假定必需的JAR位于運行時類路徑上)。 接下來顯示運行上述演示類的輸出:

Jul 19, 2015 9:30:05 PM org.hibernate.validator.internal.util.Version INFO: HV000001: Hibernate Validator 5.1.3.Final Null Manufacturer Examplemanufacturer may not be null Null License ExamplelicensePlate may not be null Too Few Seats ExampleseatCount must be greater than or equal to 2 Too Few License Digits ExamplelicensePlate size must be between 2 and 14 Null Manufacturer and Null License Examplemanufacturer may not be nulllicensePlate may not be null No Cars in Garagecars size must be between 1 and 2147483647 Messed Up Cars in Garagecars[].licensePlate size must be between 2 and 14cars[].manufacturer may not be nullcars[].licensePlate may not be nullcars[].seatCount must be greater than or equal to 2

結論

這篇文章證明了Bean驗證規范的參考實現Hibernate Bean Validator可以在Java SE環境中執行。 作為演示的一部分,還討論了與Bean驗證規范和Hibernate Bean驗證器實現相關的一些基本概念。

其他資源

  • Java技巧:獨立實現中的休眠驗證
  • 如何將javax.validation導入我的Java SE項目?
  • 使用Hibernate Validator滿足您的驗證需求

翻譯自: https://www.javacodegeeks.com/2015/07/using-hibernate-bean-validator-in-java-se.html

總結

以上是生活随笔為你收集整理的在Java SE中使用Hibernate Bean Validator的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。