Objektorientierte Datenbanken

Ähnliche Dokumente
Objektorientierte Datenbanken

Objektorientierte Datenbanken

Klausur Objektorientierte Datenbanken SS 2004 Iwanowski

Objektorientierte Datenbanken

JDO Java Data Objects

Vesant JDO Genie für transparente Persistenz mit relationalen Datenbanken.

Objektorientierte Datenbanken

Objektorientierte Datenbanken

Objektorientierte Datenbanken

Analyse und praktischer Vergleich von neuen Access- Layer-Technologien in modernen Webanwendungen unter Java. Oliver Kalz

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

4. Vererbung Die Klasse Object. Die Klasse Object

Java für Computerlinguisten

1 Klassen und Objekte

Einführung in C# Teil 1. Matthias Nübling

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Praktische Informatik 1

Objektorientierte Programmierung Studiengang Medieninformatik

Persistenz von Objekten relationale Datenbank Eigene Datenstruktur XML (JAXB) Proprietäre Dateiformate (Lochkarten)

12 Abstrakte Klassen, finale Klassen und Interfaces

7. Schnittstellen Grundlagen zu Schnittstellen. 7. Schnittstellen

Weitere Beispiele. Beispiel CD-Spieler: Exemplare eines abstrakten Konzepts. 7. Schnittstellen. Schnittstelle: Syntax

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Wiederholung: Gerüstbeispiel. Vererbungshierarchie: Typ 0

Kapitel 9. Programmierkurs. Attribute von Klassen, Methoden und Variablen. 9.1 Attribute von Klassen, Methoden und Variablen

Kapitel 14. Objekt-relationales Mapping (ORM) mit Hibernate bzw. Java Persistance API (JPA) Prof. Dr. Wolfgang Weber Vorlesung Datenbanken

Informatik B. Vorlesung 14 Serialisierung, Autoboxing. Dr. Ralf Kunze

Java Data Objects. SIG Development Java Persistenz-Frameworks

Java Einführung Klassendefinitionen

Repetitorium Informatik (Java)

OOI mit Java. Unsere Beispielklasse. Hund name: String laut: String groesse: int gewicht: int gibname(): String giblaut(): String

Prof. W. Henrich Seite 1

Softwareentwicklung mit Enterprise JAVA Beans

Die Klasse java.lang.object. Thorsten Treffer

Programmieren in Java

Methoden und Wrapperklassen

Javakurs zu Informatik I. Henning Heitkötter

Typumwandlungen bei Referenztypen

3 Objektorientierte Konzepte in Java

Theorie zu Übung 8 Implementierung in Java

Felder - Arrays. Typ feldname[] = new Typ[<ganze Zahl >]; Beispiel: double vektor[] = new double[5]; auch eine Initialisierung ist möglich.

! 1. Unterklassen und Vererbung! 2. Abstrakte Klassen und Interfaces! 3. Modularität und Pakete. II.4.2 Abstrakte Klassen und Interfaces - 1 -

Objektorientierte Programmierung Studiengang Medieninformatik

Einstieg in die Informatik mit Java

Programmierkurs Java

Java: Eine Übersicht. Dennis Giffhorn. Lehrstuhl für Programmierparadigmen Universität Karlsruhe

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

Interfaces und Vererbung

Factory Method (Virtual Constructor)

Java Data Objects. Dr. Arno Schmidhauser Letzte Revision: Juni Webseite:

Programmieren 2 Java Überblick

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Objektorientierte Datenbanken

Web-Techniken Einführung in JavaScript

7. Übung Informatik II - Objektorientierte Programmierung

Heute. Nachbetrachtung Wissensüberprüfung. Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12.

Grundlagen der Informatik 0

Übersicht. Vorstellung des OO-Paradigmas

Einstieg in die Informatik mit Java

Java I Vorlesung 6 Referenz-Datentypen

Klassen als Datenstrukturen

Info B VL 14: Java Collections/Reflections

Einführung in die Programmierung

C++ Teil 9. Sven Groß. 17. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil Juni / 17

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Vererbung & Schnittstellen in C#

Durch die Teil-von-Beziehung soll ausgedrückt werden, dass ein Objekt A als (physikalischer) Teil eines Objekts B angesehen wird. Insbesondere kann ei

Algorithmen und Datenstrukturen

Java 8. basierend auf Folien von Florian Erhard

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke

Vererbung. Oberklassen und Unterklassen

Java Reflection. Meta-Programmierung mit der java.lang.reflection API. Prof. Dr. Nikolaus Wulff

Programmierkurs Java

Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen?

Programmiertechnik Erweiterungen in Java 5

Neuere Sprachelemente in Java

Grundlagen von Python

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Gebundene Typparameter

Einstieg in die Informatik mit Java

Verkettete Datenstrukturen: Listen

Javakurs für Anfänger

Algorithmen und Datenstrukturen

Einführung in die. objektorientierte Programmierung

2.13 Vererbung. Rainer Feldmann Universität Paderborn Technische Informatik für Ingenieure (TIFI) WS 09/ Article

Kapitel 6. Vererbung

Programmieren II. Innere Klassen. Heusch 10, Ratz 5.2.1, Institut für Angewandte Informatik

Neben der Verwendung von Klassen ist Vererbung ein wichtiges Merkmal objektorientierter

Einstieg in die Informatik mit Java

Programmieren in Java -Eingangstest-

Vererbung. Martin Wirsing. Ziele. Vererbung

Java-Programmierung mit NetBeans

Kapitel 6. Vererbung

Javakurs für Anfänger

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Spracherweiterungen in Java 5

Objektorientierung (OO)

Einführung in C# Teil 3. Matthias Nübling

Transkript:

OODB 8 Slide 1 Objektorientierte Datenbanken Vorlesung 8 Sebastian Iwanowski FH Wedel

OODB 8 Slide 2 Offene Fragen vom letzten Mal: Kann man in einer JDOQL-Anfrage Elemente herausfiltern, deren Attribute eine Maximaleigenschaft im Vergleich zu anderen erfüllen? Nein, weil Filter keine Variablenveränderungen zulassen (nur Abfragen) Wann und in welcher Form werden Daten bei einer Anfrage aus der Datenbank geholt? Darf eine Collection, über die iteriert wird, nichtpersistente Objekte enthalten? Extent: Es werden nur die gefilterten Daten aus der Datenbank übertragen. Collection: Es werden alle Daten übertragen, Filter wird vom Client vorgenommen, daher auch für transienten Objekte zulässig (laut JDO-Spezifikation) Wie allgemein dürfen Java-Ausdrücke in set-ordering sein? Es sind nur navigierende Zugriffe auf Attribute erlaubt (also keine beliebigen Rechenoperationen). Als Datentypen zugelassen sind alle primitiven (außer boolean), alle Wrapper-Typen (außer Boolean) sowie zugelassene Spezialfälle (aber nicht eigendefinierte Objekte)

OODB 8 Slide 3 JDO Persistenzkonzept Persistenzfähige Klassen, objektspezifische Persistenz, Persistenz durch Erreichbarkeit Transaktionskonzept mehrere Transaktionsmanagementstrategien Anfragesprache (JDOQL) mit objektorientiertem Fokus, Java-Syntax Datenidentitätskonzepte berücksichtigt unterschiedliche Anforderungen von Datenbank und Programm Konzept zum Management von Datenveränderungen über so genannte Lebenszykluszustände von Daten definiert Mechanismen für den Lebenszyklusübergang

JDO-Datenidentitätskonzepte OODB 8 Slide 4

OODB 8 Slide 5 JDO-Datenidentitätskonzepte Wozu benötigt man die genaue Definition der Identität? für die Suche nach einem bestimmten Objekt in der Datenbank für Verweise auf andere Objekte in der Datenbank für die Arbeit mit persistenten Objekten in der Java Virtual Machine für den Abgleich zwischen Objekten in der JVM und der Datenbank

OODB 8 Slide 6 JDO-Datenidentitätskonzepte Wie bestimmt man im Allgemeinen die Identität eines Objekts? durch Gleichheit der Adresse durch Beantwortung bestimmter Äquivalenzmethoden mit true durch Verwendung eines eindeutigen Namens

JDO-Konzept: JDO-Datenidentitätskonzepte Jedes First-Class-persistente Objekt hat eine JDO-spezifische ID Jede JDO-spezifische ID gehört zu einer ID-Klasse, die folgende Eigenschaften erfüllt: Die ID-Klasse ist public Die ID-Klasse implementiert das Interface Serializable Die ID-Klasse hat einen Konstruktor ohne Parameter Die ID-Klasse überschreibt tostring() für Vergabe eines eindeutigen Namens. Die ID-Klasse hat einen Konstruktor, der einen String als Parameter hat. Jede persistenzfähige Klasse hat eine eindeutige ID-Klasse Die ID-Klasse einer persistenzfähigen Klasse wird in den XML- Metadaten festgelegt: 1) entweder automatisch 2) oder individuell gewählt OODB 8 Slide 7

OODB 8 Slide 8 JDO-Datenidentitätskonzepte 1) Automatische Festlegung der ID-Klasse: Datastore-Identity Konzept: Identität wird durch eindeutigen Namen festgelegt Der Identitätsname kann aber nicht selbst gewählt werden, sondern wird durch die Persistenzverwaltung automatisch festgelegt. Ebenso wird die Klasse und Instanz der ObjektId durch die Persistenzverwaltung automatisch festgelegt. Zugriff über Objektname (als String) oder ObjektId (als Object) Vorteile?

OODB 8 Slide 9 JDO-Datenidentitätskonzepte 2) Individuelle Festlegung der ID-Klasse: Application-Identity Konzept: Identität wird durch Primärschlüsselfelder festgelegt Vorteile? Klasse und Instanz der ObjektId wird durch die Applikation festgelegt. Ein eindeutiger Objektname, der sich aus den Primärschlüsseln zusammensetzen muss, kann ebenfalls durch die Applikation festgelegt werden. Zugriff über Objektname (als String) oder ObjektId (als Object) Jede Application-ID-Klasse muss folgende zusätzliche Eigenschaften erfüllen: Die ID-Klasse hat für jedes Primärschlüsselfeld ein public Feld gleichen Namens Die Methoden equals(obj) und hashcode() müssen von jedem einzelnen Primärschlüsselfeld abhängen Die Datentypen der Primärschlüsselfelder müssen zu denen gehören, die per default persistenzfähig sind (außer HashSet, siehe OODB 6, Folie 8)

OODB 8 Slide 10 JDO-Datenidentitätskonzepte 3) Spezialfall: nondurable Identity Für Datenbankobjekte, die in der Datenbank keine ID erhalten können Realisierung: produktabhängig

OODB 8 Slide 11 Zusammenfassung: JDO-Datenidentitätskonzepte JDO kennt folgende Datenidentitätskonzepte: Datastore identity wird von FastObjects voll unterstützt Application identity wird von FastObjects nicht unterstützt nondurable identity wird von FastObjects nicht unterstützt

OODB 8 Slide 12 JDO-Datenidentitätskonzepte Möglichkeit des direkten Zugriffs auf ein Datenbankobjekt: Persistentes Objekt PersistenceManager.getObjectId (Object) PersistenceManager.getObjectById (Object, boolean) Zugriff über ID: Objekt-ID Object.toString () PersistenceManager.newObjectIdInstance (Class, String) Zugriff über Namen: Objektname (String)

FastObjects-Erweiterungen zur Datenidentität OODB 8 Slide 13

OODB 8 Slide 14 FastObjects-Erweiterungen zur Datenidentität Zugriff über Namensbindung wie bei ODMG: Methoden von com.poet.jdo.persistencemanagers: static void makepersistent (PersistenceManager, Object, String) static Object findobject (PersistenceManager, String) static void deletepersistentname (PersistenceManager, String)

OODB 8 Slide 15 FastObjects-Erweiterungen zur Datenidentität Standard-JDO-Zugriffsmöglichkeiten auf Datenbankobjekte: via Extent via JDO-Query via Object-ID / Objektnamen weitere FastObjects-Zugriffsmöglichkeit: via Objektwurzel(n) zu allen persistenten Objekten, die erreicht werden können Methode von com.poet.jdo.netwalker: Collection compute (Transaction, Object)

Konzept zum Management von Datenveränderungen: Lebenszykluszustände OODB 8 Slide 16

OODB 8 Slide 17 Lebenszykluszustände eines Objekts Jedes Objekt einer persistenzfähigen Klasse hat Zustand, der die Persistenz geschichte beschreibt Die Zustände werden intern als flags abgespeichert Zustände werden durch bestimmte Aktionen implizit gesetzt Einige Zustände können abgefragt oder explizit gesetzt werden Gegenwärtige Zustände beeinflussen die Ausführung anderer Aktionen

OODB 8 Slide 18 Lebenszykluszustände eines Objekts Obligatorische Zustände: transient persistent-new hollow persistent-clean persistent-dirty persistent-deleted persistent-new-deleted Optionale Zustände: transient-clean transient-dirty persistent-nontransactional gibt es in FastObjects!

OODB 8 Slide 19 Lebenszykluszustände eines Objekts Zusammenhang zwischen den obligatorischen Zuständen:

OODB 8 Slide 20 Lebenszykluszustände eines Objekts Welche Auswirkungen haben die Zustände? Transiente Objekte: keine Verbindung zu irgendeinem Datenbankobjekt makepersistent erzeugt immer neues Datenbankobjekt hohle (hollow) Objekte: Verbindung zu konkretem Datenbankobjekt keine Speicherbelegung für Datenfelder (aus Effizienzgründen) keine feste Bindung vom PersistenceManager mehr (könnte durch Garbage Collector aufgeräumt werden!)

OODB 8 Slide 21 Lebenszykluszustände eines Objekts Erreichen des Spezialzustands hollow: durch Beendigung einer Transaktion (gilt für alle Objekte des PersistenceManagers) durch direkten Objektzugriff aus Datenbank (über ObjektId bzw. Objektnamen) durch Iterieren eines Extents durch Ergebnis einer Query durch Navigieren von anderem persistenten Objekt aus hollow ist der Normalzustand eines Objekts!

OODB 8 Slide 22 Lebenszykluszustände eines Objekts Kann man die Zustände abfragen? Methoden von JDOHelper: transient hollow p.-clean p.-dirty p.-new p.-del. p.-new-del. ispersistent(object) F T T T T T T istransactional(object) F F T T T T T isdirty(object) F F F T T T T isnew(object) F F F F T F T isdeleted(object) F F F F F T T für FastObjects: PersistenceManagers.isHollow (PersistenceManager, Object)

OODB 8 Slide 23 Nächste Veranstaltung zum Thema OODB: HEUTE, 08.06.2005 um 17 Uhr, HS 5: Christian Romberg (Versant Europa, Hamburg) trägt vor zum Thema: Versant Open Access: Ein objektorientiertes API und O/R Mapping Tool eröffnet Datenbankprogrammierung jenseits von DataSet Architekturen