Folien_03 - DBIS - Humboldt

Werbung
Einführung Projektseminar Informationssysteme – 14.05.2008
Objektrelationales Mapping
Frank Huber
Humboldt-Universität zu Berlin
Sommersemester 2008
Einführung Projektseminar Informationssysteme – 14.05.2008
Allgemeines
• Java: objektorientierte Sicht auf die Daten
• Relationale Datenbanken: relationale Sicht auf die
Daten:
• nur Relationen
• keine Typsicherheit
• keine Vererbung
• Problem: Abbildung nicht trivial
• Lösung: O/R-Mapper
Sommersemester 2008
Einführung Projektseminar Informationssysteme – 14.05.2008
Vorher-Nachher
• Ohne O/R-Mapping
•
•
•
•
Manuelles Connection-Handling
SQL schreiben, um Daten zu holen
Daten in Objekte kopieren/umwandeln
SQL schreiben, um das Objekt zu verändern
• Mit O/R-Mapping
•
•
•
•
Datenbankverbindung wird vom Mapper bequem bereitgestellt
POJO-Objekt* wird anhand seiner Klasse vom Mapper geladen
POJO-Objekt wird über Setter verändert
Mapper detektiert die Änderungen und schreibt sie bei einem
commit in die Datenbank
• Ergo:
• Datenbankzugriff direkt über (gemappte) Java-Objekte
• kein SQL mehr im Code
• datenbankunabhängig
Sommersemester 2008
Einführung Projektseminar Informationssysteme – 14.05.2008
Ansätze
• Bytecode-Enhancement (z.B. Hibernate):
• POJO-Classfiles werden zur Laufzeit um die MapperKontrollstrukturen erweitert
• Ableitung von einer Superklasse (z.B. Cayenne):
• POJOs werden von einer gemeinsamen Klasse abgeleitet,
welche die Kontrollstrukturen enthält
Sommersemester 2008
Einführung Projektseminar Informationssysteme – 14.05.2008
Bestandteile eines Cayenne-Mappings
• Haupt-Konfigurationsdatei cayenne.xml
• DomainMap: Mapping zwischen Klassen und Tabellen
*DomainMap.map.xml
• DomainNode: Konfiguration der physischen
Datenquelle *DomainNode.driver.xml
• cayenne.xml wird im Resource-Pfad gesucht
Sommersemester 2008
Einführung Projektseminar Informationssysteme – 14.05.2008
Steps
• Erstellen des Mappings
• Konfiguration des Cayenne-Modelers - Verbinden mit der
Datenbank
• Reverse Engineering der Datenbank
• "Flachklopfen" der n:m – Beziehung, d.h. 1:M und N:1
• Alles (Java-Klassen, Mapping-Files) am rechten Ort
speichern
• Verwenden von Cayenne
• DataContext ist meist der Einstiegspunkt
• Deployment dergestalt, dass DataContext immer an den
aktuellen Request-Thread gebunden wird. Siehe Cayenne
User Guide, Kapitel 12
• Zugreifen von Objekten über DataObjectUtils
Sommersemester 2008
Einführung Projektseminar Informationssysteme – 14.05.2008
Ein paar Fallstricke
• Datenbank für Cayenne-Primary-Key-Generierung
vorbereitet?
• getId() eines Objektes liefert nicht den Primary Key
zurück. Dafür DataObjectUtils verwenden.
• Cayenne überschreibt nie die "echten" Java-ModelFiles, selbst dann nicht, wenn keine Oberklasse
angelegt wird
• Cayenne-Hilfe für 1.2 nur im Cayenne Wiki
Sommersemester 2008
Einführung Projektseminar Informationssysteme – 14.05.2008
Schluss
• Selber lesen: http://cayenne.apache.org/
• modeling-inheritance
Sommersemester 2008
Einführung Projektseminar Informationssysteme – 14.05.2008
Dritte Praktikumsaufgabe (Überblick)
• Verstehen von O/R-Mapping
• Erstellen eines O/R-Mappings für Cayenne
• Verwenden des O/R-Mappers für den
Datenbankzugriff
• Massendaten
• Lasttests
Sommersemester 2008
Einführung Projektseminar Informationssysteme – 14.05.2008
Fragen?
Sommersemester 2008
Herunterladen