Datenvalidierung in Java: Überblick über Bibliotheken und Werkzeuge

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Datenvalidierung in Java: Überblick über wichtige Bibliotheken und Werkzeuge



Datenvalidierung ist eine der wichtigsten Phasen in der Entwicklung jeder Anwendung. Ungültige oder schädliche Daten, die in das System gelangen, können zu Fehlern, Sicherheitslücken und Datenverlust führen. In Java gibt es mehrere leistungsstarke Bibliotheken, die helfen, diesen Prozess zu automatisieren und zu standardisieren. In diesem Artikel betrachten wir die wichtigsten Validierungswerkzeuge, ihre Besonderheiten und Anwendungsbeispiele.



1. Jakarta Bean Validation (früher JSR 380 / Bean Validation 2.0)



Dies ist der De-facto-Standard für die Validierung von Java-Objekten. Er definiert eine Reihe von Annotationen, die auf Feldern, Methoden und Klassen platziert werden können. Die bekannteste Implementierung ist Hibernate Validator.



Wichtige Annotationen:

  • @NotNull — prüft, dass der Wert nicht null ist.
  • @NotEmpty — für Zeichenketten, Sammlungen oder Arrays: nicht null und nicht leer.
  • @NotBlank — Zeichenkette ist nicht null und enthält mindestens ein Nicht-Leerzeichen.
  • @Size(min, max) — begrenzt die Länge einer Zeichenkette oder die Größe einer Sammlung.
  • @Min / @Max — numerische Grenzen.
  • @Pattern(regexp) — Prüfung mit einem regulären Ausdruck.
  • @Email — Prüfung des E-Mail-Formats.


Anwendungsbeispiel:

import jakarta.validation.constraints.*;

public class User { @NotBlank(message = "Name darf nicht leer sein") private String name;

@Email(message = "Ungültige E-Mail") @NotBlank private String email;

@Min(18) @Max(120) private int age;

// Getter und Setter}


So führen Sie die Validierung durch:

import jakarta.validation.*;import java.util.Set;

public class ValidationExample { public static void main(String[] args) { ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); Validator validator = factory.getValidator();

User user = new User(); user.setName(""); // leerer Name user.setEmail("invalid"); user.setAge(150);

Set<ConstraintViolation<User>> violations = validator.validate(user); for (ConstraintViolation<User> v : violations) { System.out.println(v.getPropertyPath() + ": " + v.getMessage()); } }}


Vorteile: standardisierter Ansatz, Integration mit Spring und Jakarta EE, Unterstützung für benutzerdefinierte Annotationen.



2. Apache Commons Validator



Eine Bibliothek von Apache, die eine Reihe vorgefertigter Validatoren für gängige Datentypen bereitstellt: E-Mail, URL, Kreditkarten, IP-Adressen usw. Im Gegensatz zu Bean Validation gibt es hier keine Annotationen – die Validierung erfolgt durch den Aufruf statischer Methoden.



Beispiel:

import org.apache.commons.validator.routines.*;

public class CommonsValidatorExample { public static void main(String[] args) { EmailValidator emailValidator = EmailValidator.getInstance(); System.out.println(emailValidator.isValid("test@example.com")); // true

UrlValidator urlValidator = new UrlValidator(); System.out.println(urlValidator.isValid("https://pythonlib.ru")); // true

CreditCardValidator ccValidator = CreditCardValidator.getInstance(); System.out.println(ccValidator.isValid("4111111111111111")); // true (Visa) }}


Vorteile: einfache Integration, keine Konfiguration erforderlich, geeignet für einmalige Prüfungen.



3. OVal (Object Validation Framework)



Eine flexible Bibliothek, die sowohl Annotationen als auch programmatische Konfiguration unterstützt. Ermöglicht die Definition komplexer Validierungsregeln, einschließlich feldübergreifender Prüfungen und Abhängigkeiten.



Beispiel mit Annotationen:

import net.sf.oval.constraint.*;

public class Order { @NotNull

Empfehlungen