Advanced Topics Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.

Slides:



Advertisements
Ähnliche Präsentationen
Object Relational Mapping
Advertisements

Object Relational Mapping (ORM). Objektmodell - Datenbankmodell.
Simon Martinelli – JSR 303 Bean validation Simon Martinelli –
Persistente Domänenmodelle mit JPA 2.0 und Bean Validation
Objektrelationales Mapping mit JPA
Persistente Domänenmodelle mit JPA 2.0 und Bean Validation
Objektrelationales Mapping mit JPA Advanced Topics Jonas Bandi Simon Martinelli.
M a r c – o l i v e r p a h l Informatik I – Kapitel 7 Klassen und höhere Datentypen Zusammenfassung des Kapitel 7 Küchlin, Weber, Einführung in die Informatik,
Datenintegrität Einschränkung der möglichen Datenbankzustände und -übergänge auf die in der Realität möglichen Formulierung von Integritätsbedingungen.
Datenintegrität Integitätsbedingungen Schlüssel
Transaction Synchronization for XML Data in Client Server Web Applications Stefan Böttcher & Adelhard Türling Universität Paderborn.
PL/SQL - Kurze Einführung -.
JPQL Java Persistence Query Language
Anwendungen des OODM auf die ADB / NDB
MySQL.
© A. Kemper / A. Eickler1 Kapitel 5: Datenintegrität Integitätsbedingungen Schlüssel Beziehungskardinalitäten Attributdomänen Inklusion bei Generalisierung.
JDBC & ODMG Motivation - Beispielanwendung JDBC - DriverManager - Connection - Statement - ResultSet Anwendung ODMG - Objektmodell /ODL - OQL - Java-Binding.
Objektrelationales Mapping mit JPA Working with Persistent Objects Jonas Bandi Simon Martinelli.
Objektrelationales Mapping mit JPA Advanced Mapping Jonas Bandi Simon Martinelli.
Objektrelationales Mapping mit JPA Entity Mapping Jonas Bandi Simon Martinelli.
Objektrelationales Mapping mit JPA Getting Started Jonas Bandi Simon Martinelli.
Zusammenfassung / Ausblick Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Objektrelationales Mapping mit JPA Ausblick Jonas Bandi Simon Martinelli.
M a r c – o l i v e r p a h l Die ObjektOrientierte Mühle Das Beispiel soll noch einmal das Konzept der Objektorientiertheit erläutern. Dabei werden außerdem.
IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL],
Dynamische Webseiten Java servlets.
PL/SQL - Programmierung von Programmeinheiten. © Prof. T. Kudraß, HTWK Leipzig Gespeicherte Prozeduren – Eine Prozedur ist ein benannter PL/SQL Block,
3.1.4 Leser/Schreiber-Ausschluß (reader/writer exclusion)
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
Datenintegrität Referentielle Integrität create table
Oracle interMedia Audio Vortrag für das Seminar Oracle Zusatzoptionen Chris Haußmann.
JDBC -Java Database Connectivity-. 15./22. April 2004JDBC2 JDBC.... verbindet Java-Programme mit SQL-basierten Datenbanken.. liefert eine generische SQL-API.
DVG Verkettete Listen Verkettete Listen. DVG Verkettete Listen 2 Primitive Datentypen Vorteile: –werden direkt vom Prozessor unterstützt.
1 Datenintegrität Statische Bedingung (jeder Zustand) Dynamische Bedingung (bei Zustandsänderung) Bisher: Definition eines Schlüssels 1:N - Beziehung Angabe.
1 Kapitel 8: Datenintegrität. 2 Datenintegrität Statische Bedingung (jeder Zustand) Dynamische Bedingung (bei Zustandsänderung) Bisher: Definition eines.
USE2ANT Die Umstellung von Use Makefiles zu Ant & Junit Von Isaac, Maleen und Marc.
Persistente Domänenmodelle mit JPA 2.0 und Bean Validation
Working With Persistent Objects
Wir bauen uns eine Webapplikation!
Servlet III Java Webanwendung Webcontainer Web.xml
VS one Veranstalter: VSone Feb. 08 Folie 1 Copyright by XML-Serialisierung zur Persistierung von Objekten Thomas Schissler
OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt.
Java Performance Tuning Performance Tuning is similar to playing a strategy game but happily you usually get paid for it.
Objektrelationales Mapping mit JPA 2.0
FH-Hof Standard Query Language Richard Göbel. FH-Hof Geschichte der Sprache SQL System/R-Projekts von IBM zu Beginn der 70er Jahre: Entwicklung der Sprache.
Projekt Alcatraz Java RMI / Spread - Gruppe A4.
Gameplay Systems I Softwaretechnologie II (Teil 2): Simulation und 3D Programmierung SS 2012 Prof. Dr. phil. Manfred Thaller Referent: Christian Weitz.
Datenintegrität Integitätsbedingungen Schlüssel
ORMapper: NHibernate Henning Eiben
Bean Validation JSR-303 Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Entity Mapping Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Advanced Mapping Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
3/28/2017 8:11 PM Visual Studio Tools für Office { Rapid Application Development für Office } Jens Häupel Platform Strategy Manager Microsoft Deutschland.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Parallel Programming Thread Synchronization. Heute 1. Lösung zu Assignment 2 2. Erstellen und Starten von Threads in Java 3. Das synchronized Schlüsselwort.
Kap 4-1OHO Kap. 4.2 Das Orbix CORBA-System Kurzer überblick zu der CORBA-Implementierung Orbix •Unser Fahrplan: •IDL Verwendungsbeispiel •Zoom-In: CORBA.
Getting Started Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Equals, Hashcode und CompareTo Micha Kessler
Template v5 October 12, Copyright © Infor. All Rights Reserved.
Projekt Systemintegration Datler, Kroiß, Sachs Systemintegration ILV, FL / MIC- 2 (SS2014)
Design Patterns Ein Muster (pattern) ist eine Idee, die sich in einem praktischen Kontext als nützlich erwiesen hat und dies auch in anderen sein wird.
Common Language Runtime Seminar Softwareentwicklung Wintersemester 2003 Gertraud Orthofer
Torque in Turbine Team 3 Alexander Mittermair Michael Wesinger.
Hibernate (OR-Mapping)
Datenbankanbindung mit
Launch ON Global.vi System ID object name classname Services to suscribe Observer Control Ref vi-path Service name Step 1 : Objects register to the Global.vi´s,
1 Stammdaten-Export/Import Eindeutigkeitsproblem Beschreibung und vorgeschlagene Lösung
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #8 SQL (Teil 5)
11 Zugriffskontrolle (Access Control) Ziele Privilegien Rollen GRANT und REVOKE Befehl Privilegien Rollen GRANT und REVOKE Befehl.
 Präsentation transkript:

Advanced Topics Persistente Domänenmodelle mit JPA 2.0 und Bean Validation

SQL Queries EntityManager.createNativeQuery(String sql) EntityManager.createNativeQuery(String sql, Class resultClass) Kann auch als NamedQuery definiert werden: Ausführen des NamedQueries und Parameterübergabe: name = "employeeReporting", query = "SELECT * FROM emp WHERE id = ?", resultClass = Employee.class) Query q = em.createNamedQuery("employeeReporting"); q.setParameter(1, employeeId); q.getResultList()

Result Set Mapping (1) Definition Verwendung name = "employeeResult", entities = Employee.class) Query q = em.createNativeQuery( "SELECT * FROM EMPLOYEE", "employeeResult");

Result Set Mapping (2) Mapping Foreign Keys Wenn die Foreign Keys im Resultat der Abfrage enthalten sind, werden die einfachen Beziehungen ebenfalls mitgeführt Multiple Result Mapping SELECT e.*, a.* FROM emp e, address a WHERE e.adress_id = a.id name = "EmployeeWithAddress", entities = = = Address.class)}

Result Set Mapping (3) Mapping Inheritance SELECT id, name, start_date, daily_rate, term, vacation, hourly_rate, salary, pension, type FROM employee_stage name="EmployeeStageMapping", entityClass=Employee.class, @FieldResult(name="hourlyRate",column="HOURLY_RATE") } ) )

Lifecycle Callbacks Callbacks sind eine gängige Methode, um Einfluss auf den Lade- oder Speichervorgang von Objekten zu nehmen. Mögliche Events: PrePersist, PostPersist, PreRemove, PostRemove, PreUpdate, PostUpdate, PostLoad public class ImageMessage extends protected void protected void uncompress() {... }

Entity Listeners Wenn Sie dieselbe Funktionalität bei Callbacks von verschiedenen Entities verweden wollen, können Sie einen Entity Listener erstellen: Entity Listener verwenden: 7 public class BaseEntityDebugListener public void debugPrePersist(BaseEntity e) { log.debug("PrePresist: " + e); public class Employee extends BaseEntity

Vererbung und Lifecycle Events 1.Prüfen ob Default Listeners existieren 2.Höchste Ebene der Vererbung Annotations prüfen 3.Wiederhole Schritt 2 für die nächst tiefere Ebene 4.Höchste Ebene der Vererbung auf Methoden mit zum Event passender Annotation prüfen 5.Wiederhole Schritt 4 für die nächst tiefere Ebene 8

Sperrzeitpunkt Daten werden in der Datenbank im Rahmen von SQL-Befehlen gesperrt. Da Änderungen vorerst lokal durchgeführt und erst zum Commit-Zeitpunkt in die DB propagiert werden, findet das Sperren erst beim Commit statt. Allfällige Wartesituationen, Deadlocks, Integritätsverletzungen treten effektiv erst zum Commit-Zeitpunkt auf. 9

Optimistic Locking / Versionierung Die Versionierung im Rahmen von JPA ist als optimistsches Locking zu verstehen. Mit der Versionierung kann ein Concurrency Control über Transaktionen hinweg realisiert werden. Mit können Lost Updates detektiert und vermieden werden: Das Feld kann int, Integer, short, Short, long, Long oder java.sql.Timestamp sein public class Employee protected long version;... create table emp ( version bigint not null,...

Weitere Locking Strategien Soll REPEATABLE_READ zur Anwendung kommen, kann Read Locking verwendet werden: em.lock(LockModeType.READ) Um eine Entität zum Schreiben zu sperren, wird Write Locking verwendet em.lock(LockModeType.WRITE) Die Verwendung von anderen Isolationlevels, muss über die JDBC Connection erfolgen 11

Enhanced Locking (JPA 2.0) JPA 2.0 führt neue Lockingstrategien ein: OPTIMISTIC ( = READ ) OPTIMISTIC_FORCE_INCREMENT ( = WRITE ) PESSIMISTIC_READ Repeatable Read PESSIMISTIC_WRITE Serialized PESSIMISTIC_FORCE_INCREMENT -> With version field Kombination Opitmistic/Pessimistic möglich! 12

13 Enhanced Locking (JPA 2.0) Example in EntityManager.refresh() public void applyCharges() { Account acct = em.find(Account.class, acctId); // calculate charges, etc. int charge = … ; if (charge > 0) { em.refresh(acct, PESSIMISTIC_WRITE); double balance = acct.getBalance(); acct.setBalance(balance - charge); }

Schema Generation Die Erzeugung von DDL kann, aber muss nicht durch eine Implementation der JPA Spezifikation angeboten werden. In der JPA Spezifikation sind verschiedene Angaben (Annotations und Attribute davon) vorgesehen, welche die Erzeugung von DDL-Befehlen ermöglichen 14 public class Message (unique = false, nullable=false, columnDefinition="varchar", lenghth=64 ) public BigDecimal sender;

Aufgabe: Advanced Topics 1.Erstellen Sie ein Result Set Mapping für ein SQL Query 2.Erweiteren Sie die BaseEntity um die Attribute createdAt und updatedAt und verwenden Sie Lifecycle Callbacks, um diese Attribute vor dem Insert und Update entsprechend abzufüllen 3.Erweitern Sie Ihre BaseEntity mit Optimistic Locking und testen Sie das Verhalten 4.Erweitern Sie ihr Mapping an beliebiger Stelle mit Angaben zur Schema Generierung 15

16 XML Mapping

The Metadata Puzzle Reihenfolge bei der Verarbeitung der Metadaten: 1.Annotations verarbeiten 2.Klassen aus XML Mapping hinzufügen 3.Attribute aus XML Mapping hinzufügen 4.Defaultwerte setzen 17

Das Mapping File Rootelement is entity-mappings: 18 <entity-mappings xmlns=" xmlns:xsi=" instance" xsi:schemaLocation= " version="2.0">

Defaults im Mapping File Annotations ausschalten Persistence Unit Defaults schema catalog access cascade-persist entity-listeners Diese können auch ausgeschaltet werden 19

Defaults im Mapping File Mapping File Defaults package schema catalog access 20

Queries und Generators sequence-generator table-generator named-query named-native-query sql-result-set-mapping 21

Entity Mapping mit XML 22

23 Packaging and Deployment

Configuring Persistence Units Persistence Unit Name Transaction Type RESOURCE_LOCAL oder JTA Persistence Provider org.hibernate.ejb.HibernatePersistence Data Source nur bei JTA Mapping Files META-INF/queries.xml 24

Managed Classes Lokale Klassen Alle annotierten Klassen im Deployment Unit in welcher das persistence.xml gepackt ist Klassen in Mapping Files Mit XML gemappte Klassen Explicitly Listed Classes Im persistence.xml eingetragene Klassen Zusätzliche JARs mit Managed Classes Im persistence.xml unter jar-file eingetragene JARs 25

Properites zur Laufzeit übergeben Die properties im persistence.xml können ebenfalls zur Laufzeit beim Erstellen der EntityManagerFactory übergeben werden: 26 Map props = new HashMap(); props.put("toplink.jdbc.user", "emp"); props.put("toplink.jdbc.password", "emp"); EntityManagerFactory emf = Persistence.createEntityManagerFactory("EmployeeService", props);

27 Tools

IDE Integration Eclipse Projekt DALI Oracle Enterprise Pack for Eclipse JBoss Tools NetBeans IntelliJ IDEA 28