michael klein [email protected] 1/56 n-k-i vorlesung informationssysteme: neuere konzepte...
TRANSCRIPT
![Page 1: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/1.jpg)
Michael [email protected]
1/56
N-K-IN-K-I
VorlesungInformationssysteme: „Neuere Konzepte“
Dipl.-Inform. Michael [email protected]
Dipl.-Inform. Heiko [email protected]
Persistenz von Objekten
![Page 2: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/2.jpg)
Michael [email protected]
2/56
N-K-IN-K-I Details zu Teil I
I-1: Web und Datenbanken 1. Webinformationssysteme, JSP 2. Praktische Übung zu JSP 3. Komponentenarchitekturen, EJB 4. Web Services & Fragestunde
I-2: Objektorientierte Datenbanksysteme 1. Persistenz von Objekten
![Page 3: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/3.jpg)
Michael [email protected]
3/56
N-K-IN-K-I Persistenz von Objekten
Problem: Objekte einer objektorientierten Programmiersprache (wie Java) sind transient Bei Programmende verloren
Aber: Viele Anwendungen benötigen die Erhaltung bestimmter Objekte über das Programmende hinaus. Beispiele: Kundenobjekte, Bestellungsobjekt
Ziel daher: persistente Objekte
![Page 4: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/4.jpg)
Michael [email protected]
4/56
N-K-IN-K-I Anforderungen an Objektpersistenz
Gewünschte Eigenschaften der Persistenz:
TransparenzBenutzer arbeiten in gleicher Weise mit transienten und persistenten Objekten. Persistenz erfordert keine Sonderbehandlung bei der Programmierung
InteroperabilitätPersistente Objekte können auch in anderen als der Erstellungsumgebung verwendet werden UND das Festschreiben ist von konkreten Persistenzsystemen unabhängig. Laufzeitumgebung und persistenter Speicher sind austauschbar
Skalierbare WiederauffindbarkeitDas Auffinden von persistenten Objekten erfolgt ohne vollständiges Durchsuchen des Objektpools
Mehrbenutzer, Konflikterkennung, Verteilung
![Page 5: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/5.jpg)
Michael [email protected]
5/56
N-K-IN-K-I Persistenztechniken (1)
Welche Persistenztechniken für (Java-)Objekte gibt es?
BRAINSTORMING
![Page 6: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/6.jpg)
Michael [email protected]
6/56
N-K-IN-K-I Persistenztechniken (2)
1) Objektserialisierung
2) Manuelles Objekt-Relationales Mapping
3) OR-Mapping-Tools Einfache Mapper Container Managed Persistence (EJB2) NEU: Java Data Objects (JDO)
4) Objektorientierte Datenbanksysteme (OODMBS)
![Page 7: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/7.jpg)
Michael [email protected]
7/56
N-K-IN-K-I Technik 1: Objektserialisierung - Idee
Idee: Wandle Objekt in einen Bytestrom um und lege diesen in einer Datei auf dem Filesystem ab.
name = „Peter Pan“kundennr = 12345
peter : Kunde
1 0 0 1 1 0 0 0 1 0 1 1 0 1 0 0 1 1 1 0 0 1
b1 : Bestellung
Artikelnr = 887
b2 : Bestellung
Artikelnr = 998
DateisystemPersistentes Medium
![Page 8: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/8.jpg)
Michael [email protected]
8/56
N-K-IN-K-I Objektserialisierung in Java
In Java durch zwei Streams: ObjectOutputStream, ObjectInputStream
Standard-Methoden: void writeObject(Object o)Object readObject()
Für Ablage in Datei: Umleiten der Ströme z.B. in FileOutputStream / FileInputStream
Beispiel:Kunde peter = new Kunde();peter.name = „Peter Pan“;peter.kundennr = 12345;peter.bestellungen = {new Bestellung(887), new Bestellung(998)};
FileOutputStream out = new FileOutputStream(„peter.ser");ObjectOutputStream s = new ObjectOutputStream(out);s.writeObject(peter); s.close(); out.close();
![Page 9: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/9.jpg)
Michael [email protected]
9/56
N-K-IN-K-I Was wird serialisiert?
Was wird von Objekt o serialisiert?
o‘s Klasse (im Beispiel also „Kunde“) Signatur von o‘s Klassen (z.B. public etc.) Werte von o‘s Attributen
wenn sie nicht als „transient“ markiert sind und wenn sie nicht statisch sind
Weitere Objekte, auf die o‘s Attribute verweisen
Generell gilt: Klassen, die serialisiert werden können,implementieren das leere Interface „Serializable“.Aufruf von writeObject auf Objekte, deren Klasse nichtSerializable implementiert, führt zu Exception.
![Page 10: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/10.jpg)
Michael [email protected]
10/56
N-K-IN-K-I Serialisierung – Bewertung
Transparenz Nicht gegeben. Klassen müssen von Hand
serialisiert/deserialisiert werden.
Interoperabilität Problematisch. Feste Bindung an Java (sogar spezielle
Versionsbindung). Generell aber unabhängig von verwendeter Speichermethode.
Skalierbare Wiederauffindbarkeit Nicht gegeben. Objekte müssen vollständig (inkrementelles
Laden nicht möglich) im Hauptspeicher deserialisiert werden, um Bedingungen testen zu können.
Einfache Technik, aber nur für kleine Datenbestände
![Page 11: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/11.jpg)
Michael [email protected]
11/56
N-K-IN-K-IT 2: Manuelles objekt-relationales
Mapping
Idee: Bilde Klassen und Beziehungen als Relationen ab und speichere Objekte per JDBC in relationalem DBMS mit diesem Schema
name = „Peter Pan“kundennr = 12345
peter : Kunde b1 : Bestellung
artikelnr = 887
b2 : Bestellung
artikelnr = 998
RDBMS
JDBCname kundennr artikelnr kundennr
Peter Pan 12345 887
998
12345
12345
Kunde Bestellung
![Page 12: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/12.jpg)
Michael [email protected]
12/56
N-K-IN-K-I OR-Mapping: Probleme
Grundproblem:Objektorientiertes Modell ist mächtiger als relationales Modell nur verlustbehaftete Abbildung möglich
Probleme: Methoden: nicht abbildbar Objektidentität: nur durch künstliche Schlüssel Klassenzugehörigkeit: Schwierig, nur durch
externes Zusatzwissen Vererbunghierarchien: unter Abstrichen (siehe
später)
![Page 13: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/13.jpg)
Michael [email protected]
13/56
N-K-IN-K-I Grundsätzliche Abbildungsvorschriften
Klasse k Relation k
dabei eindeutige Attributfolge als Schlüssel s festlegen Attribute von k geben Attribute der Relation
1:n-Beziehung b zwischen k und m Schlüssel von k wird als Fremdschlüsselattribute in m
aufgenommen. Attribute von b werden in m aufgenommen.
n:m-Beziehung b zwischen k und m neue Relation b mit folgenden Attributen
Schlüssel aus k Schlüssel aus m Attribute der Beziehung b (falls vorhanden)
![Page 14: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/14.jpg)
Michael [email protected]
14/56
N-K-IN-K-I Abbildungsvorschriften – Vererbung (1)
Vererbung
Person
Student Professor Mitarbeiter
nrname
matnr rang stundenzahl
Möglichkeit 1: Alle Attribute in die Blattklassen ziehen und nur diese als Tabellen umsetzen
Student(nr, name, matnr)Professor(nr, name, rang)Assistent(nr, name,
stundenzahl, fachgebiet)Programmierer(nr, name,
stundenzahl, sprache)
Charakteristika: Es kann keine Objekte von
inneren Klassen geben. Vererbungsbeziehung nicht
mehr ersichtlich Kein Verbinden (Join) von
Relationen nötig
Assistent
fachgebiet
Programmierer
sprache
![Page 15: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/15.jpg)
Michael [email protected]
15/56
N-K-IN-K-I Abbildungsvorschriften – Vererbung (2)
Vererbung
Person
Student Professor Mitarbeiter
nrname
matnr rang stundenzahl
Möglichkeit 2: Jede Klasse als Relation nur mit ihren eigenen Attributen und dem Schlüssel
Person(nr, name)Student(nr, matnr)Professor(nr, rang)Mitarbeiter(nr, stundenzahl)Assistent(nr, fachgebiet)Programmierer(nr, sprache)
Charakteristika: Objekte auch von inneren Klassen Vererbungsbeziehung gut nachgebildet,
aber nur durch Zusatzwissen erkennbar keine redundanten Attribute außer
Schlüssel Attribute von Objekten blattnaher
Klassen müssen mit aufwändigen Joins gesammelt werden
Assistent
fachgebiet
Programmierer
sprache
![Page 16: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/16.jpg)
Michael [email protected]
16/56
N-K-IN-K-I Abbildungsvorschriften – Vererbung (3)
Vererbung
Person
Student Professor Mitarbeiter
nrname
matnr rang stundenzahl
Möglichkeit 3: Jede Klasse als Relation mit allen (d.h. auch geerbten) Attributen und dem Schlüssel
Person(nr, name)Student(nr, name, matnr)Professor(nr, name, rang)Mitarbeiter(nr, name, stundenzahl)Assistent(nr, name, stundenzahl,
fachgebiet)Programmierer(nr, name,
stundenzahl, sprache)
Charakteristika: Objekte auch von inneren Klassen Vererbungsbeziehung nur durch
Zusatzwissen erkennbar Redundante Attribute
Fehleranfälligkeit, Änderungsaufwand Keine Joins nötig
Assistent
fachgebiet
Programmierer
sprache
![Page 17: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/17.jpg)
Michael [email protected]
17/56
N-K-IN-K-I Abbildungsvorschriften – Vererbung (4)
Vererbung
Person
Student Professor Mitarbeiter
nrname
matnr rang stundenzahl
Möglichkeit 4: Eine Relation, die alle Attribute und zusätzlich einen Typ enthält. Nicht benötigte Attribute werden mit NULL belegt.
Person(personentyp, nr, name, matnr, rang, stundenzahl, fachgebiet, sprache)
Charakteristika: Vererbungshierarchie nicht mehr
erkennbar Relation stark aufgebläht mit vielen
NULL-Werten Da nur eine Relation: keine Joins nötig
Assistent
fachgebiet
Programmierer
sprache
![Page 18: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/18.jpg)
Michael [email protected]
18/56
N-K-IN-K-IAbbildungsvorschriften – N-äre
Beziehungen
Professor
nameunirang
Vorlesung
namesws
Student
matnrfach
Mehrstellige Beziehungen als Relation, die Schlüssel aller beteiligten Relationen sowie eigene Beziehungsattribute enthält.
prüft
0..*0..1
0..*
note
Prüfung(profName, profUni, vorlesungName, matnr, note)
![Page 19: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/19.jpg)
Michael [email protected]
19/56
N-K-IN-K-I OR-Mapping – Bewertung
Transparenz Nicht gegeben. Objekte müssen eigenständig (durch spezielle
Methoden) dafür sorgen, dass sie per JDBC persistent gehalten werden. Zudem: Abstriche bei der Abbildbarkeit.
Interoperabilität Gegeben, sofern OR-Umsetzung keine programmiersprachen- oder
DBMS-spezifischen Funktionen verwendet.
Skalierbare Wiederauffindbarkeit Gegeben, wenn OO-Anfragesprache (z.B. OQL) genügend gut in eine
relationale Anfragesprache (z.B. SQL) transformiert werden kann.
Geeignet, wenn Datenmodell nicht zu komplex (d.h. wenige Klassen, flache Hierarchien, keine langen Beziehungsketten)
Hoch skalierbare Technik, aufgrund langjähriger Erfahrung mit dem rel. Modell und ausgereiften, leistungsfähigen RDBMS.
![Page 20: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/20.jpg)
Michael [email protected]
20/56
N-K-IN-K-I Technik 3: OR-Mapping Tools
Idee: Füge zwischen Anwendung und RDBMS eine zusätzliche Softwareschicht ein, die das OR-Mapping automatisch und transparent durchführt.
OO-Anwendung
OR-Mapping-Schicht
RDBMS
JDBC, SQL
Java
Relationen, Tupel
Klassen, Objekte
![Page 21: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/21.jpg)
Michael [email protected]
21/56
N-K-IN-K-IGenerelle Probleme bei OR-Mapping-
Tools
OO-Anwendung1
OR-Mapping-Schicht
RDBMS
Tupel
Objekt
1 2 3
1 2 3 4 5 6 7 8 9 A B
Hauptspeicherobjekte: Anwendungen greifen direkt auf Variablen und
Methoden zu, verändern Instanzvariablen. ORM-Schicht muss dies erkennen und die Änderungen in die DB übertragen.
Mehrere verteilte Anwendungen können auf das gleiche Objekt zugreifen (hier z.B. Objekt 3).
OO-Anwendung2 3 4 5
OR-Mapping-Schicht
Objekt
Tupel
![Page 22: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/22.jpg)
Michael [email protected]
22/56
N-K-IN-K-I Generelle Ansätze
Generelle Ansätze:
Direkte Mapper Container Managed Persistence (wie in EJB2) Bytecode-Postprozessor (wie in Suns JDO)
![Page 23: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/23.jpg)
Michael [email protected]
23/56
N-K-IN-K-I Direkte Mapper (1)
Tool zum Hinzufügen zusätzlicher Methoden, die Abbildung von Instanzvariablen zu Tabellenspalten durchführen.
MyClass
attr1attr2attr3
MyClass read(key)void update()
MyClass
attr1attr2attr3
Tool(mittels
Reflection oder Metafile
meist in XML)
geerbt von Oberklasse oder
im Quellcode hinzugefügt
Read: Fragt DB mittels JDBC/SQL ab underzeugt aus Ergebnis das ObjektUpdate: Überprüft per Attributvergleich auf Änderung und schreibt ggf. zurück
![Page 24: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/24.jpg)
Michael [email protected]
24/56
N-K-IN-K-I Direkte Mapper (2)
Probleme Generell: Zugriffe auf Objekt werden nicht abgefangen.
Daher: Problematisch, wenn mehrere Anwendungen das gleiche
Objekt verändern und zu unterschiedlichen Zeitpunkten zurückschreiben Konflikte, die nicht erkannt werden
Kein Nachladen von Objektgraphen möglich. Bei read wird Objekt und alle abhängigen Objekte geladen
Geeignet für: Dokumentartiges Verarbeiten von Objekten (z.B. CAD)
Alleine komplett einladen, editieren, speichern. Nicht: freingranulares Laden/Schreiben von Einzelobjekten
![Page 25: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/25.jpg)
Michael [email protected]
25/56
N-K-IN-K-I Direkte Mapper (3)
Bekannte Tools:
Castor/JDOcastor.exolab.org
JRelationalFrameworkhttp://jrf.sourceforge.net/
Turbine/Torquejakarta.apache.org/turbine/torque/
Hibernatehttp://hibernate.sourceforge.net/
Cayennehttp://objectstyle.org/cayenne/
![Page 26: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/26.jpg)
Michael [email protected]
26/56
N-K-IN-K-I Container Managed Persistence (EJB2)
Idee: Verwende zum Zugriff auf Instanzvariablen get/set-Methoden. Diese werden abstract definiert und automatisch generiert. Beziehungen zwischen Klassen werden im Deployment-Deskriptor abgelegt.
![Page 27: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/27.jpg)
Michael [email protected]
27/56
N-K-IN-K-I Container Managed Persistence (2)
Bestellung
Kunde
name: String
1
0..*
Generator
<<abstract>>getName() : StringsetName(String)getBestellung() : Collection<Bestellung>setBestellung (Collection<Bestellung>)
Kunde
name: String
getName() : StringsetName(String)getBestellung() : Collection<Bestellung>setBestellung (Collection<Bestellung>)
Containermanager implementiert Methoden so, dass er Änderungen am Objekt abfangen und entsprechend darauf reagieren kann.
DescriptorDateien
![Page 28: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/28.jpg)
Michael [email protected]
28/56
N-K-IN-K-I CMP – Probleme
Probleme: get/set-Methoden abstrakt keine weitere
Geschäftlogik kann eingebaut werden Viele Descriptor-Dateien nötig. Abhilfe schaffen
Generatoren wie XDoclet oder EJBGen
![Page 29: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/29.jpg)
Michael [email protected]
29/56
N-K-IN-K-I Bytecode-Postprozessor
Idee: Verändere Bytecode so, dass Zugriffe auf Instanzvariablen abgefangen und entsprechend verarbeitet werden.
Beispieltechnik: Java Data Objects (JDO)
Quelldateien.java
Bytecodedateien.class
Enhanced Bytecode.class
javac
JDO Enhancer
JDO Persistenz-Definitionen
![Page 30: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/30.jpg)
Michael [email protected]
30/56
N-K-IN-K-I Bytecode-Postprozessoren
Probleme: Änderungen am Bytecode kritisch
Veränderte Semantik für den Programmierer nicht direkt ersichtlich
Auch Nicht-JDO-Klassen müssen verändert werden Konflikte mit anderen Postprozessoren Verlangsamte Kompilierung
![Page 31: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/31.jpg)
Michael [email protected]
31/56
N-K-IN-K-I OR-Mapping-Tools – Bewertung
Transparenz Eingeschränkt gegeben. Nutzer muss sich über
veränderte Semantik im Klaren sein. Einschränkungen bei get/set-Methoden.
Interoperabilität Nicht gegeben. Anwendung ist fest an das ORM-Tool
gebunden. Austausch meist nicht möglich, da Code/Bytecode speziell verändert.
Skalierbare Wiederauffindbarkeit Gegeben. Spezielle Anfragesprachen (OQL, JDOQL, EJBQL)
werden auf SQL gemappt und direkt im RDBMS ausgeführt.
![Page 32: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/32.jpg)
Michael [email protected]
32/56
N-K-IN-K-I Technik 4: Objektorientierte DBMS
Idee: Erstelle mehrschichtiges System, das speziell auf das Speichern und Wiederauffinden von Objekten ausgelegt ist.
Dazu:Verwandle Objekte in flache Strukturen (Records, Tupel, Arrays etc.) und lege diese unter Verwendung von bekannten DB-Indexmechanismen (B-Baum, Hashtable etc.) direkt auf den Seiten der Festplatte ab.
![Page 33: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/33.jpg)
Michael [email protected]
33/56
N-K-IN-K-I OODBMS – Beispiel O2
Beispiel: O2-Systemarchitektur
Object Layer Objekterzeugung, Objektlöschung Auffinden von ObjektenD
Memory Management Lr.
Communication Layer
Storage Layer
Zuordnung: OID HSp-Adresse Behandlung von Objektzugriffsfehlern Freispeicherverwaltung
Objektversendung
Persistente Ablage Speicherverwaltung Indizierung Transaktionsmanagement
....
....
Clie
nt.
....
....
Serv
er
evtl. über Netzwerk
![Page 34: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/34.jpg)
Michael [email protected]
34/56
N-K-IN-K-I Persistenz durch Erreichbarkeit
Welche Objekte werden persistent gespeichert?
Solche, die direkt unter Namen abgelegt werden Wurzelelemente
Solche, die von persistenten Objekten erreichbar sind Solche, die in persistenten Kollektionen enthalten sind
![Page 35: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/35.jpg)
Michael [email protected]
35/56
N-K-IN-K-I Bekannte OODBMS (für Java)
Ozone FastObjects CudenDB db4o Jeevan JYD Object Database PJODe SOD VORTeX01 XL2
Weitere unter:http://dmoz.org/Computers/Software/Databases/Object-Oriented/
![Page 36: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/36.jpg)
Michael [email protected]
36/56
N-K-IN-K-I OODBMS – Bewertung
Transparenz Gegeben. Ermöglicht objektorientiertes Arbeiten ohne
Impedance Mismatch.
Interoperabilität Nicht gegeben. Feste Bindung an OODBMS und dessen
API.
Skalierbare Wiederauffindbarkeit Gegeben durch skalierbare Indexmechanismen
zudem: weitere Datenbankfunktionalität wie Transaktionsschutz, Mehrbenutzerfähigkeit etc.
![Page 38: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/38.jpg)
Michael [email protected]
38/56
N-K-IN-K-I FastObjects
FastObjects Java-Datenbank Grundsätzliches Vorgehen: Veränderung des Java-
Bytecodes mittels Enhancer Persistenz durch Erreichbarkeit Homepage: http://www.versant.net
![Page 39: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/39.jpg)
Michael [email protected]
39/56
N-K-IN-K-I FastObjects - Produkte
FastObjects ist kommerzielles Produkt:
Produkte: FastObjects j2: Reine Java-DB, sehr klein (450 kB), nur 1
Benutzer, kein OQL, keine Benutzer FastObjects e7: Java/C++-DB, alle Features, nur 1 Benutzer FastObjects t7: Komplett-DB, mehrere Benutzer Alle kostenpflichtig
Kostenfreie Varianten FastObjects j1 (Community Edition): ähnlich j2, Community-
Registrierung erforderlich. Nur für nicht-kommerziellen/akademischen/privaten Einsatz
Trial-Edition: ähnlich e7, Registrierung erforderlich, nur 30 Tage lauffähig
![Page 40: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/40.jpg)
Michael [email protected]
40/56
N-K-IN-K-I Persistenzfähige Klassen
Klassen müssen explizit als persistenzfähig gekennzeichnet werden, so dass deren Objekte in FastObjects speicherbar sind.
Angabe in der Konfigurationsdatei ptj.opt Persistenzfähige Klassen werden von einem
Enhancer verändert. Klassen, die persistenzfähige Klassen verwenden,
selbst aber nicht persistenzfähig sind, werden als persistenzbewusst (persistence aware) bezeichnet und auch verändert.
![Page 41: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/41.jpg)
Michael [email protected]
41/56
N-K-IN-K-I Erstellung einer Datenbank
.java
.class
javac
Enhancer ptj
.jdoschema
base
Quellcode
Normaler Bytecode
Persistenzfähiger Bytecode und
Datenbank-Verzeichnisse
Persistenz-konfiguration
ptj.opt
Ausführung mit normalem java-Befehl
![Page 42: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/42.jpg)
Michael [email protected]
42/56
N-K-IN-K-I Persistenzkonfigurationsdatei
Aufbau der ptj.opt-Datei:
[schemata\<Name des Schemas>]name = <Name des Schemas>
[databases\<Name der DB>]name = <Name der DB>schema = <Name des Schemas>
<FÜR ALLE PERSISTENZFÄHIGEN KLASSEN>[classes\<Klassenname>]persistent = truehasExtent = <true oder false>schema = <Name des Schemas>
![Page 43: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/43.jpg)
Michael [email protected]
43/56
N-K-IN-K-I Neue Kollektionstypen
Persistenzfähige Kollektionstypen in FastObjects:
Im Paket: com.poet.odmg.util: BagOfObject SetOfObject ListOfObject ArrayOfObject
Standardmethoden:add, remove, clearAll, iterator etc.
![Page 44: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/44.jpg)
Michael [email protected]
44/56
N-K-IN-K-I Transaktionen
Alle Datenbankoperationen müssen in Transaktionen gekapselt werden:
Transaktion = Object der Klasse com.poet.odmg.Transaction
Erzeugen einer Transaktion = Objekterzeugung: Transaction tr = new Transaction();
Beginnen einer Transaktion = Methodenaufruf:tr.begin();
Beenden einer Transaktion = Methodenaufruf: tr.abort(); tr.commit();
![Page 45: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/45.jpg)
Michael [email protected]
45/56
N-K-IN-K-I Öffnen und Schließen der Datenbank
Komplette Datenbank wird durch Objekt der Klasse com.poet.odmg.Database repräsentiert.
Vorgehensweise: Erzeugen: Database db = new Database() Öffnen: db.open(URL, Zugriffstyp)
URL = FastObjects://LOCAL/<DBNAME> Zugriffstyp: Database.OPEN_READ_WRITE,
Database.OPEN_READ_ONLY Arbeiten mit der Datenbank innerhalb von TAs Schließen: db.close()
![Page 46: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/46.jpg)
Michael [email protected]
46/56
N-K-IN-K-I Beispiel-Datenbank: Web-Shop
Person
name:String
Warenkorb
getGesamt-preis() : double
Artikel
preis: doubletitel: String
CD
interpret : Stringlaenge : int
DVD
laenge : int
Buch
isbn : String
autorVon
0..*
1
0..11
käufer
0..* 0..*
enthält
![Page 47: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/47.jpg)
Michael [email protected]
47/56
N-K-IN-K-I Erzeugen und Benennen von Objekten
Erzeugen von persistenzfähigen Objekten durch gewöhnlichen Konstruktoraufruf:
DVD harryPotter = new DVD(„Harry Potter“);
Das Objekt ist dann noch nicht persistent. Es muss dazu explizit bei der DB unter einem Namen bekannt gemacht werden:
<Datenbankobjekt>.bind(<Objekt>, <Name>); db.bind(harryPotter, „dvd28“);
Hierbei können Exceptions auftreten: ObjectNameNotUniqueException ObjectNotPersistentException NoUniqueTransactionException
![Page 48: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/48.jpg)
Michael [email protected]
48/56
N-K-IN-K-I Entnehmer benannter Objekte
Benannte Objekte können mit der lookup-Methode wieder aus der DB entnommen werden:
Object o = <Datenbankobjekt>.lookup(<Name>); Object o = db.lookup(„dvd28“);
Das Object muss dann noch in den richtigen Typ konvertiert (gecastet) werden:
DVD harryPotter = (DVD)o;
Mögliche Exceptions bei lookup: ObjectNameNotFoundException NoUniqueTransactionException
![Page 49: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/49.jpg)
Michael [email protected]
49/56
N-K-IN-K-I Löschen persistenter Objekten
Löschen eines persistenten Objekts mit Hilfe der deletePersistent-Methode:
<Datenbankobjekt>.deletePersistent(<objekt>); db.deletePersistent(harryPotter);
Die Methode funktioniert nur, wenn das persistente Objekt von keinem anderen persistenten Objekt referenziert wird.
![Page 50: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/50.jpg)
Michael [email protected]
50/56
N-K-IN-K-I Extents - Idee
Idee: Extent = Menge aller Objekte einer bestimmten Klasse (inkl. Objekte aller Unterklassen)
Stehen automatisch für alle Klassen zur Verfügung, die in der Persistenzkonfiguration „hasExtent = true“ haben. Sie müssen daher nicht mit add/remove-Methoden verwaltet werden.
Erstellung eines Extents: Konstruktoraufruf: Extent e = new Extent(<Klassenname>) Funktioniert nur, wenn genau eine DB offen und genau eine
Transaktion gestartet ist, sonst komplexere Konstruktoren
![Page 51: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/51.jpg)
Michael [email protected]
51/56
N-K-IN-K-I Verwendung von Extents
Durchlaufen eines Extents mithilfe spezieller Navigationsmethoden, bei denen Cursor durch das Extent wandert
O1 O2 O3 O4 O5 O6 O7 O8 O9 O10 O11 O12Cursor
boolean hasNext(): Zeigt der Cursor auf ein gültiges Element? void advance(): Bewegt den Cursor zum nächsten Element void previous(): Bewegt den Cursor zum vorherigen Element void reset(): Bewegt den Cursor zum ersten Element void finish(): Bewegt den Cursor auf die Position nach dem
letzten Element Object current(): Liefert das Element, auf das der Cursor
gerade zeigt Object next(): Kombination aus current() und advance()
![Page 52: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/52.jpg)
Michael [email protected]
52/56
N-K-IN-K-I OQL-Anfragen
Verwendung der OQLQuery-Klasse Verwendung ähnlich zu JDBC
Erstellung der Anfrage über Konstruktor: OQLQuery query = new OQLQuery(<OQL-Anweisung>);
Ausführung der Anfrage: Object o = query.execute();
Rückgabe ist entweder Einzelobjekt oder Kollektionstyp
siehe nächste Woche
![Page 53: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/53.jpg)
Michael [email protected]
53/56
N-K-IN-K-I Dokumentation
Alle Dokumentationen im FastObjects-Unterordner doc:
CollectedODMGGuides.pdf Komplett-Dokumentation. Infos für diese Präsentation
in Kapitel 1-4 und 9.1 Ausführliche OQL-Referenz ab Seite 363
Einstieg in die Javadoc-Dokumentation: doc/JavaODMG3Reference/index.html
Hilfreiche Beispiele unter: Examples_ODMG/Javac2
![Page 54: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/54.jpg)
Michael [email protected]
54/56
N-K-IN-K-I Zusammenfassung: Objektpersistenz
1) Objektserialisierung
2) Manuelles Objekt-Relationales Mapping
3) OR-Mapping-Tools Einfache Mapper Container Managed Persistence (EJB2) NEU: Java Data Objects (JDO)
4) Objektorientierte Datenbanksysteme (OODMBS)
Bsp: FastObjects
![Page 55: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/55.jpg)
Michael [email protected]
55/56
N-K-IN-K-I Vielen Dank!
Danke für die Aufmerksamkeit!
Nächster Termin: Montag, 04.07.2004, 10:45 - 13:15 Uhr
(mit Fragestunde)
![Page 56: Michael Klein kleinm@ipd.uni-karlsruhe.de 1/56 N-K-I Vorlesung Informationssysteme: Neuere Konzepte Dipl.-Inform. Michael Klein kleinm@ipd.uni-karlsruhe.de](https://reader035.vdocuments.net/reader035/viewer/2022062623/55204d7e49795902118d013b/html5/thumbnails/56.jpg)
Michael [email protected]
56/56
N-K-IN-K-I Quellen
Codron Matthieu, Universität Stuttgart„Java Data Objects – Write once, persist everywhere“http://www.informatik.uni-stuttgart.de/ipvr/as/lehre/seminar/docss02/jdo_slides.pdf
Anthony Berglas, SimpleORM„Object Relational Mapping Tools“http://www.uq.net.au/~zzabergl/simpleorm/ORMTools.html
David Dueck, Yiwen Jiang, and Archana Sawhney„Storage Management for Object-Oriented Database Management Systems: A Comparative Survey“http://www.cs.uwaterloo.ca/cs-archive/CS-1991/46/storage.pdf