Java Data Objects (JDO) und Implementierung in FastObjects.

Slides:



Advertisements
Ähnliche Präsentationen
Objektrelationales Mapping mit JPA Advanced Topics Jonas Bandi Simon Martinelli.
Advertisements

Imperative Programmierung
Objektorientierte Datenbanken
DI Christian Donner cd (at) donners.com
Kapselung , toString , equals , Java API
JDBC & ODMG Motivation - Beispielanwendung JDBC - DriverManager - Connection - Statement - ResultSet Anwendung ODMG - Objektmodell /ODL - OQL - Java-Binding.
Objektrelationales Mapping mit JPA Working with Persistent Objects Jonas Bandi Simon Martinelli.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
DOM (Document Object Model)
Polymorphie (Vielgestaltigkeit)
Polymorphie (Vielgestaltigkeit)
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
Programmieren mit JAVA
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher im Kurs erarbeitete Konzepte(1): Umgang mit einfachen Datentypen Umgang mit Feldern Umgang mit Referenzen.
DVG Interfaces. DVG mehrfache Vererbung 4 Mehrfache Vererbung ist die Ableitung einer Klassen von mehreren anderen Klassen. –farbigerPunkt.
DVG Einführung in Java1 Einführung in JAVA.
07-GraphischeObjekte Graphische Objekte in EMMA301Paint.
Abstrakte Klassen, Interface
DVG Klassen und Objekte
DVG Kommentare 1 Kommentare. 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht bis zum Ende der Zeile.
JDBC EDV JDBC.
Einführung in die Programmierung Datensammlung
RelationentheorieObjektorientierte Datenbanken AIFB SS Das ODMG-Objektmodell vs. relationales Modell (1/9) ODMG-Objektmodell Literal_type Atomic_literal.
Ausführungsmodell Zustandsübergang einer Transaktion aus Nutzersicht:
Prof. K. Gremminger Folie 1 Vorlesung Datenbanksysteme SS 2002 Cursor-Konzept u Zugriff auf Mengen von Ergebnistupeln u In SQLJ Iteratoren u Vergleichbar.
Prof. K. Gremminger Folie 1 Vorlesung Datenbanksysteme SS 2002 Aufbau einer Verbindung zur Datenbank import java.net.URL; import java.sql.*; class JDBCExample.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Was umfaßt die CORBA Core Spezifikation? Welche zusätzlichen Komponenten muß ein ORB Produkt beinhalten? Core: CORBA Objekt Modell CORBA Architektur OMG.
CuP - Java Elfte Vorlesung Montag, 11. November 2002.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
OOP-Begriffe Abstraktion Modellieren Klasse Objekt Attribute Methoden
Getting Started Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Objektorientiertes Konstruieren
Variablenkonzept Klassisch, in Java Basistyp
CuP - Java Vierte Vorlesung Entspricht ungefähr Kapitel 2.1 des Skriptums Montag, 14. Oktober 2002.
Neuerungen in Java 5/6/7. Stefan Bühler für InfoPoint Überblick Java 5 neue Sprachfeatures Erweiterungen Klassenbibliothek Java 6 Erweiterungen.
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
OQL-Anbindung an Java (1) Java als Beispiel für die Einbettung von OQL in eine Programmiersprache Die OQL-Einbettung in Java ist teilweise mit dynamischem.
Persistenz: Objekt-Lebensdauer In RDBMS wird Lebensdauer von Werten durch ihren Typ festgelegt: Instanzen von Relationstypen sind persistent, alle anderen.
Motivation Motivation für objektorientierte DBMS (ODBMS): –„Impedance Mismatch“ zwischen relationalem Datenmodell und Programmiersprachen-Datenmodell erfordert.
RelationentheorieObjektorientierte Datenbanken  AIFB SS C++-ODL (1/6) Erweiterung des deklarativen Teils einer C++-Klasse Datentypen d_String,
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Java-Kurs Übung Besprechung der Hausaufgabe
Java-Kurs - 5. Übung Besprechung der Übungsaufgabe Klassen und Objekte
IT2 – WS 2005/20061Nov 14, 2005 Visibility  public: Sichtbar in allen Paketen  protected: Sichtbar innerhalb des Pakets und in den Unterklassen  (default,
Java Server Pages Technologie zur Erzeugung dynamischer Webseiten basierend auf Java-Servlets Blockseminar Wintersemester 2001/2002Jochen Pfeiffer Seite.
Javabasierte Webtechnologien Objektrelationales Mapper und JDO.
O/R - Mapper Hibernate ETIS SS04. Hibernate 2 Gliederung Motivation Architektur Persistente Klassen Mapping-Files Konfiguration und Datenbanken Ablauf.
Objektorientierte Datenbanken
Objektorientierte Datenbanken zBeim vorigen Mal: yJava Data Objects zHeute: yDer Object Data Standard der ODMG-Group xKurz: ODMG-Standard yDie POET-Implementierung.
Java Programme nur ein bisschen objektorientiert.
C++ FÜR cOMPUTERSPIELENTWICKLER
Einführung in die Programmierung mit Java
Implementieren von Klassen
 Präsentation transkript:

Java Data Objects (JDO) und Implementierung in FastObjects

2 Inhalt Anliegen von JDO JDO aus Anwendersicht JDO intern offene Punkte

3 Anliegen und Ursprung Transparente Persistenz für Java-Objekte keine Codeänderungen für Applikationsklassen implizites Speichern und Laden implizite Concurrency Control Spezifikation für Java, nicht andere Sprachen keine OODB-Spezifikation, auch auf RDBMS realisierbar Java-Binding Spezifikation der ODMG als Arbeitsgrundlage

4 Ursprung Geschaffen unter dem Java Community Process von Sun Leiter der Spezifikation: Craig RussellSun Microsystems, Inc. Expertengruppe, Mitglieder von: IBMInformix SoftwareEricsson Inc. OracleRational SoftwareSAP AG Software AGSun MicrosystemsPOET (und vielen anderen) akzeptiert als Standard Ende März 2002

5 JDO vs. JDBC JDBC Mapping des OO-Modells auf ein relationales Modell Code notwendig für: Transformation eines Objektes in Tupel (bzw. Menge von Tupeln) und Speichern mit SQL-Anweisungen SQL-Anweisungen zum Laden von Tupeln und deren Transformation in ein Java-Objekt explizites Laden und Speichern der Objekte Zuordnung bereits geladener Objekte zu DB-Objekten, d.h. man muß selbst Caching implementieren JDO alles automatisch und transparent ersetzt nicht JDBC, kann mit diesem realisiert werden

6 JDO aus Anwendersicht - Applikationsklassen Anwender legt fest, welche Klassen persistenzfähig sind d.h. Objekte dieser Klassen können gespeichert werden Applikationsklassen werden wie gewohnt entworfen, Unterstützung für alle wesentlichen Elementtypen primitive Typen, Referenzen auf andere persistente Objekte, viele Collection-Klassen usw. Metainformationen (u.a. welche Klassen sind persistenzfähig) wird in speziellen XML-Dateien beschrieben zur Laufzeit und während Entwicklung benötigt Restriktionen an Benennung und Plazierung dieser Dateien

7 Enhancen Persistenzfähige Klassen müssen javax.jdo.PersistenceCapable implementieren nicht beliebig, sondern kompatibel zur Referenzimplementation Forderung nach Transparenz: diese Implementierung sollte automatisch erzeugt werden oftmals mit einem Post-Prozessor, der direkt ByteCode in die.class-Dateien einfügt und/oder abändert FastObjects Enhancer heißt ptj

8 Enhancer (2) Methoden zum Laden und Speichern dieser Objekte werden eingefügt werden intern von der JDO Implementation aufgerufen für alle zu speichernden Felder werden spezielle Zugriffs- Methoden (Getter und Setter) eingeführt protokollieren den internen Zustand eines Objektes (clean, dirty, …) jeder direkte Zugriff auf solche Felder wird durch Methodenaufruf ersetzt => auch nicht-persistente Klassen, die direkte Feldzugriffe bei persistenten Instanzen machen, müssen enhanced werden

9 Enhancement illustriert ptj *.jdo *.class

10 JDO aus Anwendersicht - Datenbanklogik Spezifikation definiert eine Menge von Interfaces PersistenceManager, Transaction, Extent, Query, … Implementationen dieser Interfaces durch JDO Implementierer (z.B. Poet) Anwender benutzt nur die Interfaces! Zentrales Interface:javax.jdo.PersistenceManager Persistente Java Objekte erhalten eine eindeutige ObjektId

11 javax.jdo.PersistenceManager Jeder Thread benutzt normalerweise seine eigene PersistenceManager-Instanz Jedes persistente Java-Objekt im Speicher gehört zu genau einem PersistenceManager Jedes persistente Java-Objekt korrespondiert zu genau einem Datenbank-Objekt, zwei persistente Java-Objekte des selben PersistenceManagers aber immer zu verschiedenen!

12 javax.jdo.PersistenceManager (2) JVM 1 JVM 2 FastObjects Database PersistenceManagers Transient object

13 Persistenz Objekte, die mit new angelegt wurden, sind transient Objekte, die aus der Datenbank geholt wurden, sind persistent geholt mittels Query, Iterieren über Extent, Referenz von einem anderen persistenten Objekt PersistenceManager.makePersistent() transientes Objekt wird persistent Persistenz durch Erreichbarkeit PersistenceManager.deletePersistent() löscht Objekt aus der Datenbank

14 Transaktionen Pro PersistenceManager maximal eine Transaktion offen geschachtelte Transaktionen optional, von FastObjects unterstützt Nacheinander i.d.R. mehrere Transaktionen pro PersistenceManager Objektreferenzen aus alten Transaktionen bleiben gültig PersistenceManager.currentTransaction(); Interface javax.jdo.Transaction Transaction.begin() Transaction.commit() Transaction.rollback() Transaktionen erfüllen ACID-Eigenschaften

15 Beispiel: Speichern eines Objektes import javax.jdo.*; import com.poet.jdo.*; public class Main { public static void main(String[] args) { try{ PersistenceManagerFactory pmf= PersistenceManagerFactories.getFactory(); pmf.setConnectionURL("FastObjects://LOCAL/myBase"); PersistenceManager pm=pmf.getPersistenceManager(); pm.currentTransaction().begin(); pm.makePersistent(new Person("Donald Duck")); pm.currentTransaction().commit(); pm.close(); }catch(JDOUserException e){e.printStackTrace();} }

16 Extents Enthalten alle Objekte einer Klasse (d.h. auch Objekte von Unterklassen) Werden automatisch vom DBMS gepflegt Extent PersistenceManager.getExtent(Class, boolean) Iterator Extent.iterator()

17 JDOQL Anfragesprache, orientiert an Java-Syntax und Semantik Filterausdruck ähnelt boolschem Java-Ausdruck einige Methodenaufrufe erlaubt (String.startsWith(), …) wird gegen jedes Objekt aus der Kandidatenmenge (meist ein Extent) geprüft nicht so mächtig wie ODMG OQL Deklarationen von Imports, Variablen und Parametern analog Java-Syntax Parameter werden bei Ausführung auf Werte gesetzt Variablen sind mit Existenzquantor und zusätzlich an eine Grundmenge gebunden

18 JDO intern - Zustände von Objekten Jedes Objekt im Speicher hat einen Zustand transient, persistent-clean, persistent-dirty, hollow, … Zustandsübergänge entweder explizit (makePersistent()) oder implizit (Lese-/Schreibe-Zugriff) exakte Definition in der JDO Spezifikation Hollow-Objekte sind praktisch hohl, ermöglichen das Laden von Objekten aus der DB erst bei Bedarf

19 Hollow Objekte illustriert Objekt A ist hollow Nach Feldzugriff ist Objekt A nicht mehr hollow A A

20 Offene Punkte BLOB/CLOB Unterstützung, geschachtelte Transaktionen mit FastObjects schon jetzt möglich verschiedene Erweiterungen zu JDOQL Managed Relationships Prefetch API bei FastObjects jetzt schon AccessPatterns verwendbar Trigger bei FastObjects jetzt schon Watch & Notify Enhancer Invocation API Locking & Isolation Level Nonstatic inner classes Graph Traversal (Netwalker)