Datenzugriffskomponente mit JPA 2.1

Ähnliche Dokumente
Inhaltsverzeichnis. Bernd Müller, Harald Wehr. Java Persistence API 2. Hibernate, EclipseLink, OpenJPA und Erweiterungen ISBN:

Datenbankpraktikum, Gruppe F. JPA mit Hibernate. Alexander Stautner, Harald Zauner, Sascha Schreier

Java Persistence API mit Hibernate

Java-Persistence-API mit Hibernate

Java Persistence API. Phillip Ghadir Oliver Tigges

Java Persistence API 2.x. crud + relationships + jp-ql

Übungsaufgaben zur Klausurvorbereitung Datenbanken 2, SoSe 2016

Eclipse und EclipseLink

Übungsaufgabe Transaktion als Middleware

Referent: Marko Modsching. Vortrag: JPA mit Hibernate. Datum: Deutsche Software Engineering & Research GmbH

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

JPA mit Hibernate Java Persistence API in der Praxis

Kapitel 14. Objekt-relationales Mapping (ORM) mit Hibernate bzw. Java Persistance API (JPA) Prof. Dr. Wolfgang Weber Vorlesung Datenbanken

10. Datenbank Design 1

Übung B. JPA Java Persistence API. Prof. Dr. Andreas Schmietendorf 1. Übung B (Exkurs)

Persistenz. Ralf Gitzel

Leseprobe. Bernd Müller, Harald Wehr. Java Persistence API 2. Hibernate, EclipseLink, OpenJPA und Erweiterungen ISBN:

Softwareentwicklung mit Enterprise JAVA Beans

Grundlagen von SQL. Informatik 2, FS18. Dr. Hermann Lehner (Material von Dr. Markus Dahinden) Departement Informatik, ETH Zürich

5/14/18. Grundlagen von SQL. Grundlagen von SQL. Google, Facebook und Co. setzen auf SQL. Whatsapp

Übungen zum Workshop Objektrelationales Mapping mit JPA 2.0

Die Java Persistence API

insert, update, delete Definition des Datenbankschemas select, from, where Rechteverwaltung, Transaktionskontrolle

O/R Mapper. O/R Mapper anhand von NHibernate & Entity Framework Thomas Mentzel März 2010

Datenbanken im WI-Unterricht mit

Programmieren II. Martin Schultheiß. Hochschule Darmstadt Sommersemester 2011

7. XML-Datenbanksysteme und SQL/XML

Logischer Entwurf. Stufen der Entwicklung einer Datenbank. Inhalt. Übersicht. 1. Datenbank - Entwurf ( ER - Diagramm)

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort... 13

Prof. Dr. Bernd Blümel Prof. Dr. Volker Klingspor. Datenbanken und SQL

Rene Böing, Alexander Kuhn, Marc Wilmes Einführung in Spring und Hibernate

Auf einen Blick. Abfrage und Bearbeitung. Erstellen einer Datenbank. Komplexe Abfragen. Vorwort 13

Praktische SQL-Befehle

Hibernate Das Praxisbuch für Entwickler

Unsere Webapplikation erweitern

Inhaltsverzeichnis. Vorwort Kapitel 1 Einleitung... 15

Inhaltsverzeichnis. Lothar Piepmeyer. Grundkurs Datenbanksysteme. Von den Konzepten bis zur Anwendungsentwicklung ISBN:

Datenbanken Objektrelationales Mapping Spezifikation

Datenbanken. Zusammenfassung. Datenbanksysteme

Seminar 2. SQL - DML(Data Manipulation Language) und. DDL(Data Definition Language) Befehle.

Inhaltsverzeichnis. Vorwort 13. Kapitel 1 Einleitung 15

Microsoft Access 2010 SQL nutzen

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software

Polyglot Persistence und NoSQL

SQL Data Manipulation Language (DML) und Query Language (QL)

SQL. DDL (Data Definition Language) Befehle und DML(Data Manipulation Language)

Gregor Raschke 2008 HIBERNATE. Eine Einführung

Konzeptueller Entwurf

Oracle 10g Einführung

fbi h_da Datenbanken Kapitel 8: Objekt-relationales Mapping - eine Einführung - Schestag Datenbanken (Cnam) Kapitel 8-1

EclipseLink: JPA 2.0 und noch mehr

Kein blasses Schema? NoSQL und Big Data mit Hibernate OGM

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Praxisbuch Objektorientierung

ISU 1. Ue_08/02_Datenbanken/SQL. 08 Datenbanken. Übung. SQL Einführung. Eckbert Jankowski.

Inhaltsverzeichnis Einleitung Imperative Sprachkonzepte Objektorientierte Sprachkonzepte

Query Result Caching. Optimierung des Datenbankzugriffs

Kardinalitäten. Umsetzung unidirektional 1 : N ( 3 / 4 )

Hibernate. Vortragender : Nabil Janah Kursleiter : Prof. Dr. Björn Dreher Lehrveranstaltung : Komponenten-Architekturen. Nabil janah 1 Hibernate

Daten-Definitionssprache (DDL) Bisher: Realwelt -> ERM -> Relationen-Modell -> normalisiertes Relationen-Modell. Jetzt: -> Formulierung in DDL

Treffpunkt Semicolon. NoSQL. mit JPA und Hibernate OGM. Thomas Much

Christian Kühl. Von JDO zu JPA Entwicklung einer Migrationsstrategie

SQL structured query language

Datenbank und Tabelle mit SQL erstellen

Datenbanken Grundlagen und Design

SQL für Trolle. mag.e. Dienstag, Qt-Seminar

Eine neue Datenbank erstellen

Fakultät Angewandte Informatik Programmierung verteilter Systeme Übungen zur Vorlesung Informatik II, Blatt 6 - Musterlösung

Datenbanken Unit 9: OLAP, OLTP und objektrelationale Datenbanken

Vorlesung Software-Engineering I

Behandelt Java EE 6. O Reillys Taschenbibliothek. Java EE. kurz & gut. Arun Gupta O REILLY. Übersetzung von Thomas Demmig

Daniel Warner SQL. Das Praxisbuch. Mit 119 Abbildungen. Franzis

Es geht also im die SQL Data Manipulation Language.

Datenzugriffskomponenten mit JPA

Datenbanken Unit 9: OLAP, OLTP und objektrelationale Datenbanken

Geoinformation Abbildung auf Tabellen

3 Query Language (QL) Einfachste Abfrage Ordnen Gruppieren... 7

TU München, Fakultät für Informatik Lehrstuhl III: Datenbanksysteme Prof. Alfons Kemper, Ph.D.

Introduction to Data and Knowledge Engineering. 6. Übung SQL

Transkript:

Datenzugriffskomponente mit JPA 2.1 (Grundlagen der Java Persistence Architecture) Vladislav Faerman

Gliederung Einführung Konfiguration Objekt-Relationales Mapping (ORM) mit JPA Das zentrale Konzept der JPA Kaskadierung JPQL LiveCoding Zusammenfassung

Gliederung Einführung Konfiguration Objekt-Relationales Mapping (ORM) mit JPA Das zentrale Konzept der JPA Kaskadierung JPQL Zusammenfassung

Einführung zur Java Persistence API (JPA) JPA ist ein Standard für Objekt-Relationales Mapping (ORM) von Java Objekten Ziel: Persistente Abspeicherung von Objekten in Datenbanken Hibernate, EclipseLink, Oracle TopLink Essentials etc. sind bekannte JPA- Implementierungen

Gliederung Einführung Konfiguration Objekt-Relationales Mapping (ORM) mit JPA Das zentrale Konzept der JPA Kaskadierung JPQL Zusammenfassung

Konfiguration Einbindung von JPA in Java App mit Maven

Konfiguration der persistence.xml Verbindung zur Datenbank

Bedeutung von Property hibernate.hbm2ddl.auto

Gliederung Einführung Konfiguration Objekt-Relationales Mapping (ORM) mit JPA Das zentrale Konzept der JPA Kaskadierung JPQL Zusammenfassung

Objekt-Relationales Mapping (ORM) Ein Verfahren zur Speicherung von Objekten in Datenbanken Die Klassenstruktur wird auf einer relationalen Datenbankschema abgebildet

Entitäten und die Beziehungen zwischen Entitäten Entität: ein eindeutig identifizierendes Objekt Beschreibung durch Eigenschaften Beziehungen: 1:1- Beziehung 1:n- Beziehung n:1- Beziehung n:m- Beziehung

Beziehungen zwischen Entitäten Die Beziehungen unterscheiden sich zwischen: unidirektional Verbindung nur von einem der beteiligten Entitäten bidirektional Verbindung von beiden beteiligten Entitäten keine Auswirkung auf die Tabellenstruktur

Mapping einer Klasse Wichtige Annotationen für Mapping einer Klasse: @Entity: für Mapping einer best. Klasse zu einer Tabelle @Id: als Primärschlüssel für ein best. Attribut @GeneratedValue zusätzlich zur @Id- Annotation Generator für Primärschlüssel

Mapping einer Klasse Keine persistente Abspeicherung der Attribute gewünscht: - die Annotation @Transient P. S. Alle JPA- Annotationen sind im Package javax.persistence.* definiert

Unidirektionale 1:1- Beziehung Die Erweiterung der @OneToOne durch @JoinColumn- Annotation (optional):

Bidirektionale 1:1- Beziehung

1:1- Beziehung UML- Klassenmodell

1:n- Beziehung Erfolgt durch eine @OneToMany bzw. @ManyToOne- Annotation Auch hier sowohl bi- als auch unidirektionale Beziehung möglich Die bidirektionale Beziehung wird mittels mappedby Attributs der @OneToMany- Annotation realisiert

1:n- Beziehung

1:n- Beziehung UML- Klassenmodell

n:m- Beziehung Erfolgt durch eine @ManyToMany- Annotation Solange eine unidirektionale n:m- Beziehung gewünscht ist, enthält nur die besitzende Seite die @ManyToMany- Annotation Bei der bidirektionalen Beziehung wird die @ManyToMany- Annotation auf beiden Seiten benutzt und mappedby bei einer der Annotationen In der Datenbank wird automatisch eine Join- Tabelle mit Fremdschlüsseln angelegt

Unidirektionale n:m- Beziehung

n:m- Beziehung UML- Klassenmodell Ob es eine uni- bzw. bidirektionale Beziehung ist, hat das keine Auswirkung auf die Tabellenstruktur

Vererbung Drei Strategien der Vererbung werden von JPA vorgesehen: SINGLE_TABLE JOINED TABLE_PER_CLASS Umsetzung mithilfe der @Inheritance- Annotation

Verdeutlichung der Vererbung anhand eines Beispiels: UML- Klassenmodell

Vererbungsstrategie: SINGLE TABLE Erstellt eine einzige Tabelle für die gesamte Vererbungshierarchie S. g. Diskriminationsspalte wird automatisch für die Klassenzugehörigkeit des Objekts angelegt Die Angabe der Vererbungsstrategie ist in der obersten Basisklasse anzugeben

Oberste Basisklasse der Hierarchie Person

Unterklassen der Hierarchie Unterklassen definieren den Discriminator Value, d. h. Objekte nach Mapping werden in der Datenbank durch Discriminator Value konkretisiert

SINGLE TABLE: Ergebnis in der Datenbank Vorteil: Performante Abfragen (keine Joins) nur 1 Tabelle Nachteil: je nach gespeicherten Objekt bleiben nicht benötigte Datenbankspalten leer (NOT NULL-Constraints nicht möglich)

Vererbungsstrategie: JOINED Für jede konkrete und auch abstrakte Klasse wird jeweils eine Tabelle erstellt Jede Tabelle enthält Spalten nur für die Attribute, die direkt in der gemappten Klasse deklariert sind

UML- Klassenmodell für JOINED - Strategie

Vererbungsstrategie: JOINED Vorteil keine null-werte für nicht relevante Attribute Nachteil Aufwändige Abfragen (Joins)

Vererbungsstrategie: TABLE_PER_CLASS Für jede NICHT abstrakte Klasse wird eine Tabelle angelegt Jede Tabelle enthält dann nach Mapping auch die Attribute der obersten Basisklasse Vorteile Schnellere Abfrage der Objekte einer konkreten Klasse Nachteile Aufwändige Abfragen (UNION) Für polymorphe Queries muss jede betroffene Tabelle einzeln abgefragt werden Keine expliziten Fremdschlüssel

UML- Klassenmodell für TABLE_PER_CLASS - Strategie

Gliederung Einführung Konfiguration Objekt-Relationales Mapping (ORM) mit JPA Das zentrale Konzept der JPA Kaskadierung JPQL Zusammenfassung

Das zentrale Konzept der JPA EntityManager ist die zentrale Komponente in JPA Verwaltet die Schnittstelle zur Datenbank Alle Operationen mit den Entitäten werden durch EntityManager ausgeführt

Wichtige Methoden von EntityManager

EntityManager EntityManager (em): Transaktionen können durch EntityManager explizit gestartet und geschlossen werden: em.gettransaction().begin();... DB-Kommunikation... em.gettransaction().commit Innerhalb der laufenden Transaktion sind weitere Möglichkeiten wie Objekte speichern, ändern, löschen etc. möglich

Gliederung Einführung Konfiguration Objekt-Relationales Mapping (ORM) mit JPA Das zentrale Konzept der JPA Kaskadierung JPQL Zusammenfassung

Kaskadierung Für alle angesagten Annotationen wie @OneToOne, @OneToMany etc. kann auch s. g. Kaskadierung angewendet werden. Ziel ist: Bei allen Operationen, die für Objekte durchzuführen sind, müssen auch für die referenzierten Objekte anderer Klassen durchgeführt werden

Beispiel 1 für die Kaskadierung: CascadeType.ALL Alle Operationen, die mit Auto Objekt durchgeführt werden, werden mit dem referenzierten Autobesitzer Objekt auch durchgeführt

Beispiel für die Kaskadierung: CascadeType.ALL Alle Operationen, die mit Firma Objekt durchgeführt werden, werden auch mit dem referenzierten Mitarbeiter Objekt durchgeführt

Liste der Kaskadierungstypen

Gliederung Einführung Konfiguration Objekt-Relationales Mapping (ORM) mit JPA Das zentrale Konzept der JPA Kaskadierung JPQL Zusammenfassung

JPQL (Java Persistence Query Language) JPQL- eine Abfragesprache für die Entitäten Anlehnung an SQL JPQL- Abfragen werden von JPA in SQL übersetzt und Operationen werden in Datenbank ausgeführt SELECT, UPDATE und DELETE Operationen werden unterstützt

JPQL Beispiel für select- Statement Beispiel für eine JPQL- Abfrage: Die Ergebnisliste query enthält Entities vom Typ Autobesitzer, die im Programm weiter verwendet können: Hibernate: select autobesitz0_.id as id1_1_, autobesitz0_.nachname as nachname2_1_, autobesitz0_.vorname as vorname3_1_ from Autobesitzer autobesitz0_

JPQL Vergleich mit SQL JPQL select- Statement ist analog zu SQL aufgebaut: select from where group by having order by Wichtiger Unterschied: Die Queries operieren mit Klassen und Klassenattributen und nicht mit Datensätzen

LiveCoding

Gliederung Einführung Konfiguration Objekt-Relationales Mapping (ORM) mit JPA Das zentrale Konzept der JPA Kaskadierung JPQL Zusammenfassung

Zusammenfassung Objekt-Relationales Mapping mit JPA und Hibernate- Implementierung erleichtert die Anwendungsprogrammierung von Datenbankanwendungen Der Implementierungsaufwand für Projekte reduziert sich, da durch die Annotationen alle Tabellen und andere Datenbankobjekte automatisch erzeugt werden