Object-Relational Mapping:>

Werbung
<Object-Relational Mapping:>
Grundlagen der Objektpersistenz
14.11.2006 - Martin Landwehr
Agenda
„
ORM – Grundlagen/Motivation
…
…
…
…
„
ORM-Tools/Frameworks
…
…
…
…
„
Ausgangssituation
Persistenz von Objekten
Die semantische Lücke
Persistenztechniken
Marktübersicht
Grundlagen
Theoretisches Beispiel mit Hibernate
Praktisches Beispiel mit EJB 3.0
Fazit
2
Ausgangssituation
Randbedingungen – Realität
Anforderungen an Projekte
•
•
Mehrschichtige Client-/ServerArchitekturen
Kurze Entwicklungsphasen /
Release-Cyclen
•
Kosten- und Termindruck
•
Beschränkte Resourcen
•
Beschränkte Mittel
•
Moderne
Modellierungstechniken
•
Fehlende Erfahrung mit neuen
Technologien
•
Moderne Programmiersprachen
•
Dominanz relationaler
Datenbanken
•
Performante und skalierbare
Datenhaltung
•
Bestehende relationale
Datenbestände
•
Transaktionsmanagement
3
Persistenz von Objekten
„
Problem: Objekte einer objektorientierten
Programmiersprache (wie z.B. Java, C++, C#) sind
transient - in Folge gehen Objekte nach
Programmende verloren.
„
Aber: Viele Anwendungen benötigen die Erhaltung von
Objekten über das Programmende hinaus. Bsp:
Kundenobjekte, Bestellobjekte
„
Ziel daher: persistente Objekte
„
Wie viele Wege führen zum Ziel? 4
„
Neues Problem: Wie bilde ich objektorientierte
Programmierung auf ein physisches relationales
Datenbankschema ab? Exkurs: Die semantische
Lücke
4
Die semantische Lücke
Objektorientierung
Datenbankwelt
Objektzugriff, Vererbung, Polyphormie …
5
Ziele/Anforderungen Objektpersiszenz
„
Klassen, Attribute, Assoziationen und
Generalisierung abbilden
„
Kein SQL in fachlichen Klassen
„
Über Assoziationen des Modells navigieren
„
Objektmengen über Anfragen ermitteln
„
Identität von Objekten gewährleisten
„
Transaktionen auf Objektebene
6
Persistenztechniken (1)
„
Technische Vorgehensweisen / Möglichkeiten:
…
Objekteserialisierung
„ Pro: Einfache Technik für kleine Datenbestände
„ Kontra: keine Transparenz, keine skalierbare
Wiederauffindbarkeit
…
Objektrelationale Datenbanksysteme (ORACLE 8i,
IBM DB2 UDB, Informix Dynamic Server)
„ Kontra:Preis/keine Interoperabilität (PostgreSQL
mit SQL92 läuft auch auf Informix, DB2 oder
MySql4)
7
Persistenztechniken (2)
manuelles OR-Mapping
b1 : Bestellung
peter : Kunde
artikelnr = 887
name = „Peter Pan“
kundennr = 12345
b2 : Bestellung
artikelnr = 998
Kunde
name kundennr
Peter Pan
…
12345
Bestellung
artikelnr kundennr
887
998
12345
12345
JDBC
ODBC
RDBMS
Pro/Kontra:
„
„
fehlende Transparenz – Objekte müssen eigenständig (über eigene
Methoden) dafür sorgen, persistent gehalten zu werden.
Objektorientiertes Modell ist sehr viel mächtiger als relationales
Modell – Abbildung nur verlustbehaftet möglich (Vererbung, n:mRelationen, Objektidentität, Polyphormismus etc.)
8
Persistenztechniken - Manuelles OR-Mapping
Person
1
0..1
käufer
Warenkorb
0..*
enthält
1
getGesamtpreis() : double
0..*
Buch
isbn : String
„
Artikel
preis: double
titel: String
name:String
Author
0..*
CD
interpret : String
laenge : int
DVD
laenge : int
Weiteres Problem: Implementierungsaufwand
sehr hoch und fehleranfällig
9
OR-Mapping Tools - Idee
„
Idee: Füge zwischen Anwendung und RDBMS eine zusätzliche
Softwareschicht ein, die das OR-Mapping automatisch und
transparent durchführt.
OO-Anwendung
Java/C++/C# etc.
Klassen, Objekte
OR-Mapping-Schicht
JDBC, ODBC, SQL
Relationen, Tupel
RDBMS
10
OR-Mapping Tools/Frameworks - Überblick
…
…
.NET
- Gentle.NET
http://gentle.net/
- NHibernate
http://www.nhibernate.org/
- ADO.NET
PHP
-
-
…
PHP Object Generator
http://www.phpobjectgenerator
.com/
Metastorage
http://www.meta-language.net
Perl
-
Perl-ORM
http://perlorm.sourceforge.net/
…
Java
Hibernate
http://www.hibernate.org
- Java Data Objects (JDO)
http://java.sun.com/products/jdo/
- Container Managed Persistence
http://java.sun.com/javaee/
- Java Persistence API (EJB3.0)
http://java.sun.com/javaee/
- JRelationalFramework
http://jrf.sourceforge.net
- Cayenne
http://objectstyle.org/cayenne/
- ObJectRelationalBridge
http://db.apache.org/ojb/
-
- Turbine/Torque
http://jakarta.apache.org/turbine/
Siehe auch:
http://www.service-architecture.com/products/object-relational_mapping.html
11
OR-Mapping mit Hibernate
„
Eine Hibernate-Anwendung besteht normalerweise aus 4
unterschiedlichen Teilen:
1. Hibernate-Konfigurationsdatei (bzw. XML-Konfigurationsdatei)
2. Pro persistenter Klasse eine Hibernate Mapping XML-Datei
3. Der Hibernate Java Library und anderer benötigter JARDateien
4. Der Hibernate Query Language für Abfragen gegen die DB
„
Sowie natürlich
5. Den Java-Klassen
6. Der Datenbank mit dem Datenbank Schema
12
OR-Mapping mit Hibernate
1
Konfigurationsdatei
'hibernate.cfg.xml'
2
Mapping-XML-Datein
‘OBJEKT.hbm.xml'
3
Basisklassen
‘OBJEKT.java'
13
OR-Mapping mit Hibernate
4
Client
5
Setter/Getter
6
Abfragen
14
OR-Mapping Tools - Features
„
OR-Mapper bieten nicht nur einfache Persistenzfunktionen sondern auch Unterstützung für:
…
Callbacks and Callback Handlers
… integriertes Logging
… Konflikterkennung bei Mehrfachnutzung
… Optimierte Lastverteilung
… Caching
… Clustering
… Transaktionsmanagement
15
OR-Mapping Tools - Fazit
„
Pro
…
Insbesondere für größere Projekte geeignet
„
„
„
Einsparungen an Zeit und Geld
Vereinfachte Entwicklung von neuen Applikationen
Flexible Anbindung an relationale Datenbanksysteme
…
Komplexe Schemata können auf relationale Datenbanksysteme abgebildet
werden
… Programmänderungen, die im Objektmodell realisiert werden, führen zu einer
vereinfachten Weiterentwicklung der Applikation
„
Kontra
…
Noch kein Ersatz für Datenbankkenntisse
… Performanceprobleme
… Teilweise recht umständlich
… Arbeitsaufwand u.U. höher als beim reinen manuellen ORMapping
16
Literatur - Tutorials
„
Tutorial Gentle.NET
…
„
Tutorial Hibernate
…
…
…
„
http://www.mertner.com/confluence/display/Gentle/Getting+Started
http://www.laliluna.de/first-hibernate-example-tutorial.html
http://www.laliluna.de/java-database-development.html
http://www.torsten-horn.de/techdocs/java-hibernate.htm
Tutorial EJB3.0
…
http://docs.jboss.org/ejb3/app-server/tutorial/index.html
17
</Object-Relational Mapping:>
Fragen?
Herunterladen