3.2.2.12. Migration zu Hibernate Validator 4
Bei Hibernate Validator 4.x handelt es sich um eine komplett neue Code-Basis, die die JSR 303 - Bean-Validierung implementiert. Der Migrationsprozess vom Validator 3.x zu 4.x ist recht unkompliziert, aber es gibt einige Änderungen, die Sie bei der Migration Ihrer Applikation beachten müssen.
Prozedur 3.17. Sie müssen eine oder mehrere der folgenden Aufgaben ausführen
Zugreifen auf die standardmäßige ValidatorFactory
Die JBoss EAP 6 bindet eine standardmäßige ValidatorFactory unter dem Namenjava:comp/ValidatorFactory
an den JNDI-Kontext.Vom Lebenszylus ausgelöste Validierung verstehen
Wenn in Verbindung mit Hibernate Core 4 eingesetzt, so wird die Lebenszyklus basierte Validierung automatisch durch Hibernate Core aktiviert.- Die Validierung erfolgt an Entity
INSERT
,UPDATE
undDELETE
-Operationen. - Sie können die nach Ereignistyp zu validierenden Gruppen mittels der folgenden Properties konfigurieren:Die Werte dieser Properties sind durch Kommas getrennt, voll qualifizierte Klassennamen der zu validierenden Gruppen.
javax.persistence.validation.group.pre-persist
,javax.persistence.validation.group.pre-update
, andjavax.persistence.validation.group.pre-remove
.
Validierungsgruppen sind ein neues Feature der Bean Validierungsspezifikation. Falls Sie dieses neue Feature nicht nutzen möchten, so sind bei der Migration zum Hibernate Validator 4 keine Änderungen notwendig. - Sie können die Lebenszylus-basierte Validierung durch Einstellung der
javax.persistence.validation.mode
-Property aufnone
deaktivieren. Andere gültige Werte für diese Property sindauto
(der Standard),callback
undddl
.
Konfigurieren Sie Ihre Applikation zur Verwendung manueller Validierung
- Falls Sie die Validierung manuell steuern möchten, so können Sie auf eine der folgenden Weisen einen Validator erstellen:
- Erstellen Sie eine
Validator
-Instanz aus derValidatorFactory
mittels dergetValidator()
-Methode. - Speisen Sie die Validator-Instanzen in Ihr EJB, Ihr CDI-Bean oder eine andere einspeisbare Java EE Ressource ein.
- Sie können den von der
ValidatorFactory.usingContext()
wiedergegebenValidatorContext
zur Anpassung Ihrer Validator-Instanz verwenden. Mittels dieses API können Sie benutzerdefinierteMessageInterpolator
,TraverableResolver
undConstraintValidatorFactory
konfigurieren. Diese Interfaces sind in der Bean Validierungsspezifikation festgelegt und neu im Hibernate Validator 4.
Bearbeiten Sie den Code, der mit den neuen Bean Validierungsbedingungen verwendet werden soll
Die neuen Validierungsbedingungen auf Bean-Ebene erfordern Code-Änderungen wenn Sie zum Hibernate Validator 4 migrieren.- Um ein Upgracde zu Hibernate Validator 4 durchzuführen müssen Sie die Bedingungen in den folgenden Paketen Verwenden:
javax.validation.constraints
org.hibernate.validator.constraints
- Alle Bedingungen, die im Hibernate Validator 3 vorhanden waren, gibt es auch im Hibernate Validator 4. Um diese zu verwenden, müssen Sie die festgelegte Klasse importieren und - in manchen Fällen - den Namen oder den Typ des Bedingungsparameters ändern.
Verwendung benutzerdefinierter Bedingungen
Beim Hibernate Validator 3 musste eine benutzerdefinierte Bedingung imorg.hibernate.validator.Validator
-Interface implementiert werden. Beim Hibernate Validator 4 müssen Sie dasjavax.validation.ConstraintValidator
-Interface implementieren. Dieses Interface enthält dieselbeninitialize()
- undisValid()
-Methoden wie das vorherige Interface, wobei sich allerdings die Methodensignatur geändert hat. Desweiteren wirdDDL
-Änderung beim Hibernate Validator 4 nicht mehr unterstützt.