Datenvalidierung in Java: Überblick über Bibliotheken und Ansätze

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: Vollständige Anleitung zu Bibliotheken und Werkzeugen



Datenvalidierung ist einer der Schlüsselaspekte bei der Entwicklung zuverlässiger Java-Anwendungen. Ohne sie ist es unmöglich, die Korrektheit von Eingabedaten, den Schutz vor fehlerhaften Benutzereingaben oder Fehler bei der Integration mit externen Systemen zu gewährleisten. In diesem Artikel behandeln wir die wichtigsten Bibliotheken und Ansätze zur Datenvalidierung in Java, vom Standard Bean Validation bis hin zu modernen Lösungen.



Warum ist Validierung notwendig?

Validierung ermöglicht:

  • Fehlerhafte Daten frühzeitig auszusortieren
  • Die Anzahl der Fehler in der Geschäftslogik zu reduzieren
  • Die Anwendungssicherheit zu erhöhen (Schutz vor SQL-Injection, XSS)
  • Die Benutzererfahrung zu verbessern (verständliche Fehlermeldungen)


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

Dies ist der Java-Standard zur Validierung von Objekten mittels Annotationen. Die Hauptimplementierung ist Hibernate Validator. Unterstützt ab Jakarta EE 9 und Java SE 8+.



Wichtige Annotationen

  • @NotNull — Der Wert darf nicht null sein
  • @NotEmpty — Zeichenkette, Sammlung oder Array dürfen nicht leer sein
  • @Size(min, max) — Einschränkung der Zeichenkettenlänge oder Sammlungsgröße
  • @Pattern(regexp) — Prüfung mit regulärem Ausdruck
  • @Email — Korrekte E-Mail-Adresse
  • @Min / @Max — Numerische Grenzen


Anwendungsbeispiel

import jakarta.validation.constraints.*;

public class User { @NotNull(message = "Name darf nicht null sein") @Size(min = 2, max = 50, message = "Name muss zwischen 2 und 50 Zeichen enthalten") private String name;

@Email(message = "Ungültiges E-Mail-Format") @NotEmpty(message = "E-Mail ist erforderlich") private String email;

@Min(value = 18, message = "Alter muss mindestens 18 sein") @Max(value = 120, message = "Alter darf 120 nicht überschreiten") private int age;

// Getter und Setter}


Validierung ausführen

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("A"); // zu kurzer Name user.setEmail("invalid-email"); user.setAge(15); // kleiner als 18

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


2. Hibernate Validator — Erweiterte Implementierung

Hibernate Validator ist die Referenzimplementierung von Bean Validation. Es bietet zusätzliche Funktionen:

  • Benutzerdefinierte Validierungsannotationen
  • Validierungsgruppen (für verschiedene Szenarien)
  • Unterstützung von @ScriptAssert für komplexe Prüfungen


Beispiel einer benutzerdefinierten Annotation

import jakarta.validation.*;import java.lang.annotation.*;

@Target({ElementType.FIELD})@Retention(RetentionPolicy.RUNTIME)@Constraint(validatedBy = PasswordValidator.class)public @interface ValidPassword { String message() default "Passwort muss Buchstaben und Zahlen enthalten"; Class<?>[] groups() default {}; Class<? extends Payload>[] payload() default {};}


public class PasswordValidator implements ConstraintValidator<ValidPassword, String> {    @Override    public boolean isValid(String value, ConstraintValidatorContext context) {        if (value == null) return false;        return value.matc                    

Empfehlungen