Javabasierte Webtechnologien Objektrelationales Mapper und JDO.
-
Upload
stephan-heidrich -
Category
Documents
-
view
222 -
download
0
Transcript of Javabasierte Webtechnologien Objektrelationales Mapper und JDO.
![Page 1: Javabasierte Webtechnologien Objektrelationales Mapper und JDO.](https://reader035.fdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da872/html5/thumbnails/1.jpg)
Javabasierte Webtechnologien
Objektrelationales Mapper und JDO
![Page 2: Javabasierte Webtechnologien Objektrelationales Mapper und JDO.](https://reader035.fdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da872/html5/thumbnails/2.jpg)
17.06.2004 Lars Kägebein 2
Überblick
• Motivation• Objektrelationale Mapper - Überblick - Beispiel Hibernate - Performance - Fazit• Java Data Objekt - Überblick - JDO API - Vom normalem Objekt zu einem JDO - Fazit
![Page 3: Javabasierte Webtechnologien Objektrelationales Mapper und JDO.](https://reader035.fdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da872/html5/thumbnails/3.jpg)
17.06.2004 Lars Kägebein 3
Motivation
• Lösen des Impendance Mismatch Problems - Objektorientierte Lösungen in komplexen Anwendungen - Zur Speicherung meistens Relationale Datenbanken - unterschiedliche Paradigmen - ziel : Vorteil von beiden vereinen• Probleme - Objektidentität vs Primärschlüssel - Kompositionsmodell vs Fremdschlüssel - Vererbungsmodel vs ? - Verschiedene Datentypen
![Page 4: Javabasierte Webtechnologien Objektrelationales Mapper und JDO.](https://reader035.fdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da872/html5/thumbnails/4.jpg)
17.06.2004 Lars Kägebein 4
Überblick O/R Mapper
• Kleiner Projekte eventuell selbst lösen - Sql statments über jdbc / resultSet umwandeln in Datenobjekte
• Bei komplexen Anwendungen mapper nutzen - Automatische Generierung von Datenklassen - Performanceoptimierung möglich die den Overhead durch das Mapping ausgleicht - Unabhänigkeit von verschiedenen Datenbank Herstellern - Cayenne , Jakarta OJB , TopLink , Hibernate
![Page 5: Javabasierte Webtechnologien Objektrelationales Mapper und JDO.](https://reader035.fdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da872/html5/thumbnails/5.jpg)
17.06.2004 Lars Kägebein 5
O/R Mapper Hibernate
• Warum Hibernate - Open Source (LGPL) - Populär (circa 16.000 downloads / Monat) - Unterstützung aller großen Datenbanken z.b. mySql , PostgreSql, Oracle , DB2 … - Besitzt Optimierungmöglichkeiten wie Caching, Connection-pooling - Möglichkeit zur Nutzung unterschiedlicher Entwicklungsszenarien - Generierung von java klassen wenn DB Schemata vorhanden und umgekehrt - verschiedene Anfragesprachen (hql, sql, criteria Queries) - Ausführliches logging durch log4j
![Page 6: Javabasierte Webtechnologien Objektrelationales Mapper und JDO.](https://reader035.fdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da872/html5/thumbnails/6.jpg)
17.06.2004 Lars Kägebein 6
Funktionsweise von Hibernate
• Genereller Aufbau- Hibernate.properties für
Datenbank und Optimierungsparameter
- Für jede Tabelle in der DB eine .java und eine .hbm.xml
- .java beschreibt die Tabelle selber als Objekt
- .hbm.xml enthält Datentypen mapping und zusätzliche Parameter
![Page 7: Javabasierte Webtechnologien Objektrelationales Mapper und JDO.](https://reader035.fdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da872/html5/thumbnails/7.jpg)
17.06.2004 Lars Kägebein 7
Arbeiten mit Hibernate
• Java Datei
hbm.xml Datei
![Page 8: Javabasierte Webtechnologien Objektrelationales Mapper und JDO.](https://reader035.fdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da872/html5/thumbnails/8.jpg)
17.06.2004 Lars Kägebein 8
Zusammenspiel zwischen der Datenbank und Hibernate
• Ablauf im Detail- Zugriff nur über die
Datenobjekte die aus der Session kommen (selection) oder in die Session gehen (insert)
- Session von SessionFactory generiert , dort auch Optimierungen umgesetzt
- Zugriff auf Datenbank erfolgt intern durch JDBC oder ähnliches
![Page 9: Javabasierte Webtechnologien Objektrelationales Mapper und JDO.](https://reader035.fdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da872/html5/thumbnails/9.jpg)
17.06.2004 Lars Kägebein 9
Anfragen am Beispiel• Erstellen und beenden einer Session
• Eintrag in die Datenbank
• keinerlei Sql !• nur setter Methoden oder mit Konstruktoren arbeiten für inserts!
![Page 10: Javabasierte Webtechnologien Objektrelationales Mapper und JDO.](https://reader035.fdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da872/html5/thumbnails/10.jpg)
17.06.2004 Lars Kägebein 10
Anfragen am Beispiel• Verschiedene Abfragen
-HQL als Objektorientierte Erweiterung von SQL - versteht Vererbung, Polymorphie und Assoziationen
-Direkte Abfrage über Criteria - kein sql notwendig
![Page 11: Javabasierte Webtechnologien Objektrelationales Mapper und JDO.](https://reader035.fdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da872/html5/thumbnails/11.jpg)
17.06.2004 Lars Kägebein 11
Tools und Performance
• Performance• Sehr abhängig von den Einstellungen und der
Anwendung (Cache Zuweisungen für Querys) • Schlechte Erfahrungen im Zusammenspiel mit Tomcat
• Tools• Kein erstellen der java bzw. xml Dateien notwendig
wenn db-schemata schon vorhanden• Hibernate-extensions beinhaltet folgende Tools : - class2hbm, ddl2hbm, hbm2java - dadurch alle Szenarien abgedeckt
![Page 12: Javabasierte Webtechnologien Objektrelationales Mapper und JDO.](https://reader035.fdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da872/html5/thumbnails/12.jpg)
17.06.2004 Lars Kägebein 12
Fazit
• Zwar gewisser Aufwand nötig zur Einarbeitung jedoch danach sehr unabhängig von der Datenbank
• Entwickler muss nicht wissen wie DB Schemata aufgebaut , sämtliche Möglichkeiten ergeben sich durch die Get und Set Methoden
• Durch Criteria keine Kenntnisse von Sql nötig
• Nachteil jedoch eventuell Langsamer • wenn DB Schema sich ändert muss alles geändert
werden• Kein genereller Standard , unterstützt „nur“
Datenbanken (keine anderen Formate)
![Page 13: Javabasierte Webtechnologien Objektrelationales Mapper und JDO.](https://reader035.fdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da872/html5/thumbnails/13.jpg)
17.06.2004 Lars Kägebein 13
JDO Einführung
• JDO = Java Data Objects• Standard (API) zur persistenten Speicherung von Java
Objekten• Stellt Interfaces zur Verfügung welche dann von der
jeweiligen Implementierung auf den Datenspeicher zugeschnitten sind
• Dadurch Anwendung unabhängig vom Speicherort seiner Objekte / Daten, xml-files genauso möglich wie verschiedenste Datenbanken
• Soll Objektorientierte Sichtweise auf Daten ermöglichen und Anwendung vom Prozess der Persistierung komplett befreien
![Page 14: Javabasierte Webtechnologien Objektrelationales Mapper und JDO.](https://reader035.fdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da872/html5/thumbnails/14.jpg)
17.06.2004 Lars Kägebein 14
JDO API Bestandteile (1)
•JDOHelper für statische Hilfsmethoden und zur Erzeugung der PMF , zusätzlich noch Methoden zum ermitteln des Zustandes bestimmter JDO Objekte
![Page 15: Javabasierte Webtechnologien Objektrelationales Mapper und JDO.](https://reader035.fdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da872/html5/thumbnails/15.jpg)
17.06.2004 Lars Kägebein 15
JDO API Bestandteile (2)
• PMF fordert einzelne Instanzen des PM an die darüber konfiguriert werden können
• Parameter zur Optimierung möglich wie Transaktionstrategie und Cachesematik einstellungen
• Angabe der Datasource
• PM verwaltet JDO-Objekte die dort angelegt,gesucht und gelöscht werden können
• Jeder PM hat exklusiven Objektcache und genau einen Transaktionskontex zwecks transaktionaler Absicherung
• Query-Interface dient zur Absetzung von Suchanfragen• sind in JDO-Query Language formuliert
![Page 16: Javabasierte Webtechnologien Objektrelationales Mapper und JDO.](https://reader035.fdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da872/html5/thumbnails/16.jpg)
17.06.2004 Lars Kägebein 16
Vom Objekt zu JDO Objekt (1)
• Leicht zu Erreichen und Stärke von JDO • Angabe von den persistenten Eigenschaften von allen
Klassen im Package der Anwendung in XML Metadatei• Mögliche persistence-modifier hierbei : - none , transactional, persistent• Persitente Attribute : erfordern
Speichermediumabgleich ,unterliegen Transaktionsgrenzen• Transactionale Attribute : unterliegen Transaktionsgrenzen• None : sonstige• Persistent und Transactional müßen von JDO Implemtierung
beachtet werden
![Page 17: Javabasierte Webtechnologien Objektrelationales Mapper und JDO.](https://reader035.fdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da872/html5/thumbnails/17.jpg)
17.06.2004 Lars Kägebein 17
Vom Objekt zu JDO Objekt (2)
• Code Enhancer erweitert automatisch den .class Bytecode der Normalen Klasse um JDO Erweiterung
• Je nach Definition in der Meta Datei klasse nun :• Persistent Capable , muss auf jeden Fall erweitert werden• Persistent Aware , klasse selber hat keine persistenten
Attribute greift aber auf welche zu (Vererbung etc)• Sonstiges muss nicht vom Enhancer betrachtet werden
• Vorteil : sehr schnelle Erweiterung vorhandener Objekte• Nachteil : inwiefern widersprechen Veränderungen im
ByteCode der Java Grundidee der Unabhängigkeit ?
![Page 18: Javabasierte Webtechnologien Objektrelationales Mapper und JDO.](https://reader035.fdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da872/html5/thumbnails/18.jpg)
17.06.2004 Lars Kägebein 18
Identität von JDO Objekten• In Java Anwendungen von == bestimmt (gleicher
Speicherbereich innerhalb der JVM)• Bei JDO nicht sicher da Objekt von Anwendung oder
Speichermedium kommen kann !• Je nach Design der Anwendung : • Application Identity , dabei Verwaltet die Anwendung die
Datenobjekte durch hinzufügen von Objekt-Id klasse zur eigentlichen klasse
• Sinnvoll für hoch portable Klassen für verschiedene Anwendungen , nutzbar über verschiedene JDO Implementationen hinweg
• Datastore Identity , hier verwaltet eine Objekt id Klasse alle Objekte die aus der Speicherquelle kommen und garantiert dadurch Identität (nicht sichtbar)
![Page 19: Javabasierte Webtechnologien Objektrelationales Mapper und JDO.](https://reader035.fdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da872/html5/thumbnails/19.jpg)
17.06.2004 Lars Kägebein 19
JDO Objektzustände
• Können über JDOHelper abgefragt werden- Mögliche zustände hierbei : - Persistent (im Speichermedium)- transactional (mit Transaktion verbunden)- dirty (geändert in der Transaktion)- new (während der Transaktion persitent geworden)- deleted (innerhalb der Transaktion gelöscht)• Stellt im Prinzip die Eigenschaften dar die in der Meta Datei
festgelegt wurden• Dient zur internen Verwaltung der Transaktionen in JDO
![Page 20: Javabasierte Webtechnologien Objektrelationales Mapper und JDO.](https://reader035.fdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da872/html5/thumbnails/20.jpg)
17.06.2004 Lars Kägebein 20
Anfragesprache JDO-QL
• Ziel ist es ein Objekt zurückzuliefern oder eine Collection über die dann per Get Methoden die Werte ausgelesen werden können
• WHERE deklaration durch Filter abgebildet• Keine Like Operatoren sondern startWith() und endsWith()
Anwendung auf das Ergebnis Objekt
![Page 21: Javabasierte Webtechnologien Objektrelationales Mapper und JDO.](https://reader035.fdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da872/html5/thumbnails/21.jpg)
17.06.2004 Lars Kägebein 21
Fazit
• Vorteile• Performanceeinschätzungen schlecht möglich da sehr
stark abhängig von JDO Implementierung• Dadurch das als Standart definiert verschiedenste
Implementierungen denkbar• Sehr schnelle Erreichbarkeit von Objektpersistenz• Anwendungen können ihr Speichermedium schnell
ändern ,doppelte Verwendung von JDO Objekten denkbar z.b. online / offline Umgebungen
• Nachteile• Inwiefern widersprechen Veränderungen im ByteCode der
Java Grundidee der Unabhängigkeit ?• Anfragesprache (noch) nicht sehr mächtig , soll aber in der
Zukunft erweitert werden
![Page 22: Javabasierte Webtechnologien Objektrelationales Mapper und JDO.](https://reader035.fdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da872/html5/thumbnails/22.jpg)
17.06.2004 Lars Kägebein 22
Quellen
• www.hibernate.org
• www.jdocentral.com
• Studienarbeit Tobias Vogel
• Artikel : Freie Sicht auf Daten (Javamagazin 06/04)
![Page 23: Javabasierte Webtechnologien Objektrelationales Mapper und JDO.](https://reader035.fdocuments.net/reader035/viewer/2022062818/570491c51a28ab14218da872/html5/thumbnails/23.jpg)
17.06.2004 Lars Kägebein 23
Fragen ?
Vielen Dank für IhreAufmerksamkeit