| Semester_Vaadin |
|---|
| 01_StartProject |
| 02_Component |
| 03_Layout |
| 04_Basiklasse |
| 05_Serviceklasse |
| 06_GridSimple |
| 07_Event |
| 08_Exception |
| 09_Grid_Manuell |
| 10_Delete |
| 11_Validation |
| 12_Insert |
Jakarta Bean Validation ist ein Standard in Java, um Eingaben und Objekte zu validieren, ohne dass du die Prüfungen jedes Mal von Hand schreiben musst.
Prüfungen in den Setter-Methoden meiner Klasse geht natürlich auch.
Bei Bean Validation hat einige große Vorteile gegenüber „Validierung in Settern“.
Setter-Variante:
public void setTage(int tage) {
if (tage < 1 || tage > 30) {
throw new UrlaubException("tage muss zwischen 1 und 30 liegen");
}
this.tage = tage;
}
Der Code ist fest in deiner Klasse „eingebrannt“.
Bean Validation:
@Min(1) @Max(30)
private int tage;
Lesbarer, klarer, deklarativ – und die Logik ist einheitlich.
Bean Validation wird von vielen Frameworks automatisch unterstützt: - Spring Boot prüft REST-Requests bei @Valid automatisch. - Vaadin Binder kann die Annotations direkt auswerten. - Hibernate/JPA prüft Entities beim Persistieren.
Wenn du Validierung nur in den Settern machst, weiß Spring/Vaadin davon nichts → du musst die Logik selbst an jeder Stelle aufrufen.
Mit Bean Validation kannst du Gruppen definieren:
@NotNull(groups = Create.class)
@Null(groups = Update.class)
private Long id;
Damit kannst du sagen: „Beim Erstellen muss id null sein, beim Ändern nicht.“
Mit Settern geht das kaum elegant.
Bean Validation ist deklarativ → jeder sieht sofort an der Klasse, welche Regeln gelten.
Settermethoden mit Validierung können unübersichtlich werden.
Jakarta Bean Validation ist ein Standard (JSR 380 / Jakarta EE) → in allen großen Frameworks gleich.
Du kannst eigene Annotations bauen (@UsernameOrEmail, @StrongPassword, …).
Bei Settern müsstest du die Logik jedes Mal neu schreiben.
Setter-Validierung = geht, aber unflexibel, nicht wiederverwendbar, keine Framework-Unterstützung.
Bean Validation = deklarativ, lesbarer, automatisch von Spring/Vaadin/JPA unterstützt.
Deshalb: Bean Validation ist die bessere Wahl, gerade in Projekten mit Frameworks.
Du annotierst Felder oder Methoden deiner Klassen mit Constraints wie @NotNull, @Size, @Min, @Email …
Ein Validator prüft dann automatisch, ob diese Regeln erfüllt sind.
Wird eine Regel verletzt, bekommst du eine ConstraintViolation zurück.
Das ist praktisch für:
import jakarta.validation.constraints.*;
public class User {
@NotBlank(message = "Der Benutzername darf nicht leer sein")
private String username;
@Size(min = 8, max = 20, message = "Das Passwort muss zwischen 8 und 20 Zeichen lang sein")
private String password;
@Email(message = "Bitte eine gültige E-Mail-Adresse angeben")
private String email;
}