Bean Validation JSR-303 Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.

Slides:



Advertisements
Ähnliche Präsentationen
Simon Martinelli – JSR 303 Bean validation Simon Martinelli –
Advertisements

Persistente Domänenmodelle mit JPA 2.0 und Bean Validation
Objektrelationales Mapping mit JPA Advanced Topics Jonas Bandi Simon Martinelli.
C Sharp (C#) Martin Saternus Senior Student Partner
der Universität Oldenburg
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
JPQL Java Persistence Query Language
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Kapselung , toString , equals , Java API
Objektrelationales Mapping mit JPA Entity Mapping Jonas Bandi Simon Martinelli.
Objektrelationales Mapping mit JPA Getting Started Jonas Bandi Simon Martinelli.
Java 2 Enterprise Edition (J2EE)
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
IMS Universität Stuttgart 1 Einführung in XML Hannah Kermes HS: Elektronische Wörterbücher Do,
FH-Hof Tools Richard Göbel. FH-Hof Tools für die Veranstaltung JUnit: Testen ANT: Build-Tool Eclipse: Entwicklungsumgebung.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
DOM (Document Object Model)
XML-Schema HKI Proseminar Wintersemester 2010/11 Dozentin: Frau Kurz von Jan Kohl und Christian Lütticke.
Benötigte Applets Startseite: in HTML-Format Applet auf der Startseite Das Applet, das auf der Startseite geladen wird, wird die vier Buttons und die eine.
IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL],
Struts Seminar Javabasierte Webanwendungen. Tobias Kutzler2 Überblick Historie Was ist Struts? Model Controller View Zusammenfassung.
Christian Kästner Modellgetriebene Softwareentwicklung Eclipse Modelling Framework.
XDoclet ETIS SS05.
Institut für Kartographie und Geoinformation Prof. Dr. Lutz Plümer Diskrete Mathematik I Vorlesung Listen-
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
PKJ 2005/1 Stefan Dissmann Klassenhierarchie Person Kunde Goldkunde Lieferant Object.
Transaction Script Software Component Technology for Distributed Applications.
Explizite und editierbare Metainformationen für Software Muster.
Modulare Programmierung
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
DVG Klassen und Objekte
Einführung in die Programmierung Datensammlung
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Die Persistenzschicht
Persistente Domänenmodelle mit JPA 2.0 und Bean Validation
Was umfaßt die CORBA Core Spezifikation? Welche zusätzlichen Komponenten muß ein ORB Produkt beinhalten? Core: CORBA Objekt Modell CORBA Architektur OMG.
Herzlich Willkommen… welcome… soyez la bienvenue….
Working With Persistent Objects
Wir bauen uns eine Webapplikation!
Letzter Tag Spaeter Zeitpunkt letzte Lied hoert man weiter.
Publicvoid - Onlinenotes SWOS HS 2011/12. Inhalt Vorstellung Website Probleme - Lösungen Quick & easy 2 kalik1, messu2, joosp1, stahm3.
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Generalisierung/Spezialisierung Subtypisierung/Vererbung
Architecture Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Entity Mapping Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Persistente Domänenmodelle mit JPA 2.0 und Bean Validation
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Getting Started Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Variablenkonzept Klassisch, in Java Basistyp
Referent: Stephan Metzler
JavaServer Faces Urs Frei. Inhalt JSF Funktionsweise Rückblick JSP Bestandteile von JSF So einfach ist die Anwendung (Beispiel) Eclipse im Einsatz (Entwicklungsumgebung)
EPROG Tutorium #3 Philipp Effenberger
Hibernate (OR-Mapping)
Neuerungen in Java 5/6/7. Stefan Bühler für InfoPoint Überblick Java 5 neue Sprachfeatures Erweiterungen Klassenbibliothek Java 6 Erweiterungen.
Java-Kurs Übung Besprechung der Hausaufgabe
DOAG Regionaltreffen Trier/Saarland Verwendung von TopLink in J2EE Applikationen 09. September 2003 Marcus Keuper, Pfeil GmbH
Implementieren von Klassen
 Präsentation transkript:

Bean Validation JSR-303 Persistente Domänenmodelle mit JPA 2.0 und Bean Validation

Was sind Bedingungen? Anforderungen Restriktionen an Bean, Feld oder Property z.B. Not Null, , gültige -Adresse etc. Nutzen User über Fehler informieren Sicherstellen, dass eine Komponente richtig funktioniert Ungültige Daten in der Datenbank verhindern 2

Bedingungen in Java Wo können diese angewendet werden? 3

Ziel Weniger Code Ein Framework Auf allen Schichten anwendbar 4

Wo sind diese deklariert? Database Schema create table Document ( id bigint not null primary key, title varchar(30) not null, summary varchar(255), content varchar(255) ) Business Code if (document.getTitle() == null || document.getTitle().length() > 30) { throw new BusinessException( Document title invalid); } 5

Wo sind diese deklariert? Presentation level if (documentForm.getTitle() == null || documentForm.getTitle().length() > 30) { throw new BusinessException(Document title invalid); } oder in XML des Web Frameworks Client side JavaScript JSF Struts Spring MVC 6

Probleme Duplizierung Mehrfache Deklaration der selben Bedingung Doppelter Code Risiko der Inkonsistenz Überprüfung zur Laufzeit Nicht alle Bedingungen können überall geprüft werden Unterschiedliche Semantik 7

Die Lösung Einheitliche Form Eine Sprache für alle Basierend auf dem Domain Modell (JavaBeans) Einheitliche Validierung Ein Framework Eine Implementierung Brücke zu anderen Technologien API um auf Bedingungen zuzugreifen 8

Deklaration in JavaDoc public class Address { /** * cannot be null * and must be lower than 30 chars */ private String street1; Problem: wird nicht gelesen! 9

Deklaration im Code public class Address { private String street1; private String street2;... public void invariant() { if (street1 == null) throw new IllegalStateException( "street1 cannot be null"); if (street1.length() > 30) throw new IllegalStateException( "street1 must not be longer than " + "30 characters"); }... 10

Deklaration in XML 30 street1 longer than 30 characters... 11

Deklaration mit Annotations public class message="longer than {max} characters") private String street1; private String street2;... } 12

13 JSR 303

Standardisierte Deklaration Annotations (und XML) Eigene Bedingungen Standartisiertes Validation API Layer unabhängig I18n Extension points Standardisierte Metadaten API Integrationspunkt für andere JSRs und Frameworks Kann auch ausserhalb von Java verwendet werden 14

Annotations Deklaratation Auf Ebene Bean, Feld oder Getter Eigenschaften Message Groups Spezifische Parameter Deklarationen werden vererbt Klasse Interface 15

Beispiel public class Employee private String = ) private long salary;... } 16

Kaskadierung public class message="longer than {max} characters") private private Country country; } public class private String name;... } 17

Eigene Bedingung definieren (1) Eine Anotation package jpa.validator; import java.lang.annotation.*; import javax.validation.Constraint; @Constraint(validatedBy = SalaryValidator.class) Salary { String message() default "Salary nicht erlaubt"; Class[] groups() default {}; Class [] payload() default {}; } 18

Eigende Bedingung definierien (2) Eine Implementation public class SalaryValidator implements ConstraintValidator public void initialize(Salary constraintAnnotation) { //no initialization needed public boolean isValid(Employee emp, ConstraintValidatorContext context) { if (emp == null) { return true; } if (!emp.getName().startsWith("Julius") && emp.getSalary() > ) { return false; } else { return true; } 19

Mögliche Bedingungen / / / / @Zugnummer... 20

Objekt(graph) validieren Bean validieren Set > cvs = validator.validate(car); ConstraintViolation enthält Der ungültige Wert Eine internationalisierte Meldung Das ungültige Bean Pfad zum Property welches den ungültigen Wert enthält 21

(Fehler)meldungen Können ausgelagert werden I18n Parameter können in Meldung integriert werden Wert muss kleiner sein als {min} Eigener MessageResolver Kann in Frameworks verwendet werden Kann kontextsensitive Daten ausgeben 22

Groups Interface Subset von Bedingungen Erlaubt partielle Validierung z.B. nur Bedingungen eines spezifischen UseCases Reihenfolge der Validierung kann bestimmt werden Abhängikeiten zu anderen Bedingungen Resourcen- oder zeitintensive Validierungen zu = Default.class, sequence = {First.class, Second.class, Last.class}) 23

Constraint Metatdata Request API Bietet Zugriff die Metadaten Z.B. Liste aller Bedingungen einer Nützlich für Schnittstellen zu anderen Technologien Persistence (DDL) Presentation layer (Javascript programming language) Tools 24

XML META-INF/validation.xml Inhalt Definition der Bedingungen Deklaration der Bedingungen XML ergänzt UND überschreibt Annotations! Vorteil Keine Neukompilation bei Änderung der Bedingungen Trennung Code und Bedingungen 25

26 Ausblick

Endziel Gemeinsame Deklaration von Bedingungen Keine Duplizierung Nahe am Code, nahe am Model Wiederverwendbar Über Layer Frameworks Andere JSRs Deklarativ Erweiterbar 27

Was fehlt noch? Erweiterung um Methoden Parameter zu validieren Item BigDecimal price)... 28

Weiter Infos JSR Referenz Implementation Hibernate Validator 29