O/R - Mapper Hibernate ETIS SS04. Hibernate 2 Gliederung Motivation Architektur Persistente Klassen Mapping-Files Konfiguration und Datenbanken Ablauf.

Slides:



Advertisements
Ähnliche Präsentationen
Object Relational Mapping
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
Objektorientierte Programmierung
der Universität Oldenburg
Präsentation PS: Klasse File von Janko Lange, Thomas Lung, Dennis Förster, Martin Hiller, Björn Schöbel.
Definition von Klassen in Java
Objektrelationales Mapping mit JPA Getting Started Jonas Bandi Simon Martinelli.
Objektorientierter Entwurf (OOD) Übersicht
Anbindung an Anwendungen
Dr. Brigitte Mathiak WeST – Web Science & Technologies Kapitel 6 Anbindung an Anwendungen.
Ausnahmen HS Merseburg (FH) WS 06/07.
Java: Objektorientierte Programmierung
Indirekte Adressierung
Java: Grundlagen der Objektorientierung
Konstruktoren.
Reflection API ETIS SS04.
Das Build-Tool ANT ETIS SS05. ETIS SS05 - Nadine FröhlichANT 2 Gliederung Motivation Build - Datei –Allgemeiner Aufbau –Project –Target –Task –Properties.
Christian Kästner Modellgetriebene Softwareentwicklung Eclipse Modelling Framework.
XDoclet ETIS SS05.
Reflection API ETIS SS05.
Programmieren mit JAVA
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 Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
RDF-Schema Seminar: „Semantic Web“ André Rosin,
JDBC -Java Database Connectivity-. 15./22. April 2004JDBC2 JDBC.... verbindet Java-Programme mit SQL-basierten Datenbanken.. liefert eine generische SQL-API.
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
JDBC EDV JDBC.
RelationentheorieObjektorientierte Datenbanken AIFB SS Die Objekt-Definitionssprache ODL (1/24) Alle Elemente des Objektmodells können beschrieben.
RelationentheorieObjektorientierte Datenbanken AIFB SS Das ODMG-Objektmodell vs. relationales Modell (1/9) ODMG-Objektmodell Literal_type Atomic_literal.
Java Data Objects (JDO) und Implementierung in FastObjects.
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt.
Einführung und Überblick
JDBC: JAVA Database Connectivity
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Die Persistenzschicht
Herzlich Willkommen… welcome… soyez la bienvenue….
Wir bauen uns eine Webapplikation!
Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 2 Folie 2 XAML (1) s.a.
Sesame Florian Mayrhuber
Getting Started Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Vorlesung #4 Überführung des ER-Modells in das relationale Modell
Referent: Stephan Metzler
XML und Datenbanken © 2006 Markus Röder
Torque in Turbine Team 4 Josef Bohninger Thomas Lindenhofer
Torque robert.resch-wolfgang.schneider. uebersicht Was ist Torque Komponenten von Torque Generator Erzeugte Klassen Methoden Torque in Turbine Demobeispiel.
Hibernate (OR-Mapping)
Datenbankanbindung mit
Mind the Gap Die semantische Lücke zwischen Objekten und Relationen.
OQL-Anbindung an Java (1) Java als Beispiel für die Einbettung von OQL in eine Programmiersprache Die OQL-Einbettung in Java ist teilweise mit dynamischem.
Persistenz: Objekt-Lebensdauer In RDBMS wird Lebensdauer von Werten durch ihren Typ festgelegt: Instanzen von Relationstypen sind persistent, alle anderen.
Motivation Motivation für objektorientierte DBMS (ODBMS): –„Impedance Mismatch“ zwischen relationalem Datenmodell und Programmiersprachen-Datenmodell erfordert.
RelationentheorieObjektorientierte Datenbanken  AIFB SS C++-ODL (1/6) Erweiterung des deklarativen Teils einer C++-Klasse Datentypen d_String,
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
WS2006/2007 Vorlesung: Datenbanken und Internet Copyright 2006 – DBIS/Dr. Karsten Tolle Klausur-Termin? 120 Minuten Bearbeitungszeit Mögliche Termine (unter.
JDBC1 Motivation(I) JDBC keine Abkürzung, sondern geschützter Name (inoffiziell: für Java Database Connectivity) unterschiedliche DBS haben unterschiedliche.
Javabasierte Webtechnologien Objektrelationales Mapper und JDO.
Reflection API1 Motivation Reflection API Core Reflection API: java.lang.reflect Seit JDK 1.1 integraler Bestandteil der Java- Klassenbibliothek Ermöglicht:
Enterprise-IT-Praktikum Hibernate-Einführung Institut für Telematik Universität zu Lübeck Wintersmester 2012/13 Dennis Boldt David Gregorczyk.
© 2012 TravelTainment Datenbankzugriffe in Java-Applikationen mit Hilfe des Spring Frameworks Simon Wirtz Seminarvortrag WS 13/14 Oktober 2013.
Java Programme nur ein bisschen objektorientiert.
DOAG Regionaltreffen Trier/Saarland Verwendung von TopLink in J2EE Applikationen 09. September 2003 Marcus Keuper, Pfeil GmbH
XML-Erweiterungen in ORDBMS Seminar: DBMS für spezielle Anwendungen Florian Brieler.
Konstruktoren.
 Präsentation transkript:

O/R - Mapper Hibernate ETIS SS04

Hibernate 2 Gliederung Motivation Architektur Persistente Klassen Mapping-Files Konfiguration und Datenbanken Ablauf der Anwendung Anfrage Zusammenfassung

ETIS SS04Hibernate 3 Motivation (I) Impendance Mismatch: Kluft zwischen RDBMS und Objektorientierte Programmiersprachen –RDBMS: Relationen, Tupel, Attribute, Fremdschlüsselbeziehungen, … –OO Programmiersprachen: Klassen, Objekten, Eigenschaften, Beziehungen, … sollen Objekte persistent gemacht werden: –Kluft zwischen beiden Paradigmen tritt hervor, d.h. ca. 35% des Anwendungscodes für Mapping Anwendungsdaten auf Datenspeicher aufgewendet

ETIS SS04Hibernate 4 Motivation (II) Überwinden Impedance Mismatch –kleine Anwendungen: manuelles Mapping mittels JDBC ausreichend –große Anwendungen: ORM sparen Zeit und Arbeitsaufwand Ziele ORM: –Abbilden von Anwendungsdaten auf DB-Daten –Plain Old Java Objects (POJOs) persistent machen –Anfragen und Suchen von Daten –Abhängigkeiten von herstellerspezifischem SQL-Code beseitigen –evtl. dafür Query Language anbieten

ETIS SS04Hibernate 5 Motivation (III) Hibernate: –populärstes O/R Mapping-Werkzeug für Java Umgebung –open source + große aktive Community Ziel: –Entwickler 95% der Programmieraufgaben für Datenpersistenz abnehmen –Zeit für manuelles Datenhandling SQL + JDBC reduzieren –transparente Persistenz Voraussetzungen: –JDK ab 1.2 –SQL DBMS (MySQL, Oracle, DB2, generischer Zugriff…)

ETIS SS04Hibernate 6 Architektur (I) Transiente Objekte Persistente Objekte Anwendung Transaktion Session SessionFactory TransactionFactory ConnectionProvider JNDIJDBCJTA Datenbank

ETIS SS04Hibernate 7 Architektur (II) SessionFactory –Cache von kompilierten Abbildungen für einzelne DBs –Factory für Sessions Session –repräsentiert Konversation zwischen Anwendung und persistentem Speicher –kapselt JDBC-Verbindung –hält Cache von persistenten Objekten, für Navigation auf Objektgraph oder um Objekte anhand ID zu finden

ETIS SS04Hibernate 8 Architektur (III) Persistente Objekte –kurzlebige Objekte, die persistenten Status + Geschäftsfunktionen enthalten (POJOs/JavaBeans) –mit genau einer Session verbunden Transiente Objekte –Instanzen von persistenten Klassen, die aktuell nicht mit Session verbunden Transaction –kurzlebiges Objekt, um atomare Arbeitseinheit festzulegen –abstrahiert von JDBC, JTA, Corba-Transaktionen –Session kann mehrere Transaktionen umfassen

ETIS SS04Hibernate 9 Persistente Klassen (I) public class Serie { private Integer id; private String serie; private Set comic = new HashSet(); public Integer getId() { return id;} //restliche getter-Methoden public void setId(Integer integer) { id = integer;} //restliche setter-Methoden }

ETIS SS04Hibernate 10 Persistente Klassen (II) Hibernate arbeitet am besten mit POJOs (ähnlich JavaBeans) Hibernate ist nicht eingeschränkt bei Datentypen für Eigenschaften der POJOs, möglich sind also: –alle JDK-Typen inkl. Collections –primitive Datentypen Hibernate unterstützt transparente Persistenz –keine speziellen Interfaces, Superklassen für Persistentmachung nötig –Reflection und Laufzeitklassen Enhancement (keine Bytecode- Manipulation) –keine Abhängigkeit von Hibernate in der POJO-Klasse

ETIS SS04Hibernate 11 Mapping-Files (I)

ETIS SS04Hibernate 12 Mapping-Files (II) Enthält Metadaten für das O/R-Mapping –Deklaration persistenter Klassen –Abbildung von Eigenschaften auf die von DB-Relationen persistente Klassen sollten Identifier besitzen –zur Unterscheidung von Objekten Defaultsettings benutzt, wenn nur Property mit Namen angegeben Beziehungen (Assoziationen) von Objekten mappen: –one-to-one, one-to-many, –many-to-one, many-to-many

ETIS SS04Hibernate 13 Konfiguration und Datenbank (I) jdbc:mysql://short/hibernate com.mysql.jdbc.Driver net.sf.hibernate.dialect.MySQLDialect create

ETIS SS04Hibernate 14 Konfiguration und Datenbank (II) Properties mit Präfix connection –notwendige Konfiguration zum Aufbau einer JDBC- Verbindung property dialect –legt den SQL-Dialekt fest property hibernate.hbm2ddl.auto mit Wert create –automatisches Anlegen des Schemas in die DB, wenn SessionFactory kreiert wird mapping resource –Pfade zu den Mapping Files der Klassen

ETIS SS04Hibernate 15 Ablauf der Anwendung (I) private SessionFactory sessionFactory; public Run() { try { sessionFactory = new Configuration().configure(“/hibernate.cfg.xml“).buildSessionFactory(); } catch (HibernateException e) { e.printStackTrace(); } public static void main(String[] args) { Run run = new Run();

ETIS SS04Hibernate 16 Ablauf der Anwendung (II) Session s = factory.openSession(); Transaction tx = null; try { tx = s.beginTransaction(); Serie serie = new Serie(); serie.setSName(“Asterix"); s.save(serie); tx.commit(); s.close(); } catch (HibernateException e) { e.printStackTrace(); }}

ETIS SS04Hibernate 17 Ablauf der Anwendung (III) SessionFactory –verantwortlich für eine DB (kann nur ein XML Konfigurationsfile nutzen (hibernate.cfg.xml)) –Eigenschaften der Session Factory vor ihrer Erstellung treffen (Session Factory ist unveränderlich) Session –repräsentieren Arbeitseinheit mit DB –geöffnet von SessionFactory –jede DB-Operation in Session tritt innerhalb einer Transaktion auf (isoliert DB-Operationen) Objekte wie in Java üblich erzeugt (persistent mit save)

ETIS SS04Hibernate 18 Anfragen (I) Session s = factory.openSession(); Transaction tx = null; try { tx = s.beginTransaction(); Query q1 = s.createQuery("from Serie"); List l = q1.list() //Ausgabe... tx.commit(); s.close(); } catch (HibernateException e) { e.printStackTrace(); }

ETIS SS04Hibernate 19 Anfragen (II) Hibernate hat verschiedene Anfrage-Methods –Hibernate Query Language (HQL), –Criteria –direkte SQL-Anfragen am flexiblesten: HQL –leicht zu erlernen –vielseitige oo Erweiterung für SQL Hibernate nutzt für gesamte SQL-Kommunikation mit DB PreparedStatements und Parameterbindung

ETIS SS04Hibernate 20 Zusammenfassung Mapping von Klassen, Speichern und Suchen von Objekten in Hibernate angeschaut Hibernate kann viel mehr ( Roundtrip Development: Unterstützung für Transformation zu und von Quellcode (java), M appingfiles (hbm) und DB Definition (ddl)

ETIS SS04Hibernate 21 Literatur