Objektorientierte Datenbanken zBeim vorigen Mal: yJava Data Objects zHeute: yDer Object Data Standard der ODMG-Group xKurz: ODMG-Standard yDie POET-Implementierung.

Slides:



Advertisements
Ähnliche Präsentationen
Objektrelationales Mapping mit JPA
Advertisements

Objektorientierte Programmierung
der Universität Oldenburg
DVG Dateien Dateien. DVG Dateien 2 Die Klasse File Die Klasse File stellt die Verbindung zwischen dem Filesystem des Rechners und dem.
Datenbanken Einführung.
JPQL Java Persistence Query Language
Objektorientierte Datenbanken
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.
Objektrelationales Mapping mit JPA Getting Started Jonas Bandi Simon Martinelli.
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Anfragesprachen – Dipl. Ing. Ulrich Borchert / FH Merseburg 1/7
Alternativen und Muster. Alternativen Gegeben ist eine Tabelle in der ein Attribut der Tabelle Buecher Gruppe genannt wurde. So gibt es unter anderem.
Oracle WebServer - Einführung. © Prof. T. Kudraß, HTWK Leipzig Oracle Web Application Server HTML WebServer ® File system Static HTML PL/SQL Packages.
Speicherung von XML- Dokumenten als Large Objects.
Transaction Script Software Component Technology for Distributed Applications.
JDBC -Java Database Connectivity-. 15./22. April 2004JDBC2 JDBC.... verbindet Java-Programme mit SQL-basierten Datenbanken.. liefert eine generische SQL-API.
Modulare Programmierung
DVG Kommentare1 Kommentare. DVG Kommentare 2 Kommentare Es gibt zwei Arten von Kommentaren: einzeilige Kommentare // der Kommentar geht.
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.
05 - Reflection Das Reflection API Reflection2 Ziel Es kommt vor, dass eine Methode ein Objekt als Parameter übergeben bekommt, ohne dass bekannt.
Einführung in die Programmierung Datensammlung
RelationentheorieObjektorientierte Datenbanken AIFB SS Das ODMG-Objektmodell vs. relationales Modell (1/9) ODMG-Objektmodell Literal_type Atomic_literal.
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.
Java Data Objects (JDO) und Implementierung in FastObjects.
Uwe Habermann WPF Avalon Formulare aus VFP verwenden Venelina Jordanova
JDBC: JAVA Database Connectivity
Hauptseminar Datenbanksysteme - Datenbanken und XML - Thema: Type-Checking OQL Queries In The ODMG Type Systems.
1 Teil I Datenmodelle Kapitel 6: Objektorientierte Anfragesprachen.
RelationentheorieObjektorientierte Datenbanken AIFB SS Die Anbindung an Programmiersprachen (1/2) Prinzip und Zielsetzung der Sprachanbindungen.
Wir bauen uns eine Webapplikation!
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Getting Started Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Optimale Ursprungsgerade
Einfache OQL-Ausdrücke (1) Literale und Objekte können direkt konstruiert werden; gültige Ausdrücke und ihre Typen sind z.B.: "Quader77": string struct(x:1.0,
Torque in Turbine Team 4 Josef Bohninger Thomas Lindenhofer
Datenbankanbindung mit
Structured Query Language
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.
RelationentheorieObjektorientierte Datenbanken  AIFB SS Der ODMG Standard 6.2 Der ODMG Standard (1/2) Wesentliche Bestandteile des ODMG-93 Standards.
RelationentheorieObjektorientierte Datenbanken  AIFB SS Grenzen relationaler Datenbanksysteme (1/2) Eine Reihe von Anwendungsgebieten, insbesondere.
Motivation Motivation für objektorientierte DBMS (ODBMS): –„Impedance Mismatch“ zwischen relationalem Datenmodell und Programmiersprachen-Datenmodell erfordert.
Termin Festlegung Einführung MySQL Runterladen MySQL, Pentaho Design Studio Betrachtung Pentaho
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #8 SQL (Teil 5)
11 Zugriffskontrolle (Access Control) Ziele Privilegien Rollen GRANT und REVOKE Befehl Privilegien Rollen GRANT und REVOKE Befehl.
Überblick über das POET-Datenbanksystem
Datenbank System (DBS) - Warum?
JDBC1 Motivation(I) JDBC keine Abkürzung, sondern geschützter Name (inoffiziell: für Java Database Connectivity) unterschiedliche DBS haben unterschiedliche.
O/R - Mapper Hibernate ETIS SS04. Hibernate 2 Gliederung Motivation Architektur Persistente Klassen Mapping-Files Konfiguration und Datenbanken Ablauf.
Datenbanken abfragen mit SQL
1 Persistence Strategies for WebServices Senior Consultant Java Forum Stuttgart, 27. Juni 2002.
Objektorientierte Datenbanken
Objektorientierte Datenbanken zBeim vorigen Mal: yTransaktionen, Sperren yODMG-OQL zHeute: yODMG-OQL und FastObjects-OQL yIntegritätsbedingungen und Schema-Evolution.
Objektorientierte Datenbanken zBeim vorigen Mal: yDer Object Data Standard der ODMG-Group xKurz: ODMG-Standard yDie POET-Implementierung FastObjects (t7)
By Thorsten Zisler 1 SQL Datenbank Anbindung an den Supervisor.
Java Programme nur ein bisschen objektorientiert.
Die Programmiersprache Ruby Seminarvortrag von Lia Schulze Dephoff 1.
XML-Erweiterungen in ORDBMS Seminar: DBMS für spezielle Anwendungen Florian Brieler.
Vorlesung #4 Relationales Kalkül und SQL (Teil 1)
Dynamisches Laden von Klassen
(Structured Query Language)
 Präsentation transkript:

Objektorientierte Datenbanken zBeim vorigen Mal: yJava Data Objects zHeute: yDer Object Data Standard der ODMG-Group xKurz: ODMG-Standard yDie POET-Implementierung FastObjects (t7) zLernziele: yVergleich ODMG-Standard vs. JDO Ralf Möller, FH-Wedel

Object Data Standard: ODMG 3.0 zStandard für die Erzeugung und Verwaltung von persistenten Objekten (seit 1991 entwickelt) zEntwickelt von der Object Data Management Group yKonsortium vieler Firmen zUnterstützung verschiedener Programmiersprachen (Java, C++,...) zWir betrachten nur Java

ODMG 3.0 zObject Definition Language (ODL) yDeklarative Sprache zur Beschreibung von Struktur und Operationen von Objekten yPrinzipiell: neue Sprache yUmsetzung in Java möglich zObject Manipulation Language (OML) yProgrammiersprache zObject Query Language

Sprachanbindungen zODMG für Java yAnwendungsklassen = Java-Klassen + Enhancement ySpezielle Klassen für Collections

Packages zimport org.odmg.*; zimport com.poet.odmg.*;

Enhancement zDateien mit Klassendeklarationen müssen aufbereitet werden, damit Instanzen persistent werden können (Enhancement) zBeispiel:  Gegeben: Directory mit.class-Dateien und Datei ptj.opt  ptj -enhance -create

Datenbasen  Erzeugung:  Database db = new Database();  Methoden:  db.open( String url, int accessMode )  db.close() zLogische Namen für Datenbasen: URL yAbbildung auf spezielle Dateinamen in Konfigurierungsdatei möglich zDatenbasen bestehen aus einem Teil zur Beschreibung der Klassen (Schema) und einem Teil zur Beschreibung der Instanzen

Beispiel // declare a Database reference Database applicationDB; try { // call the open method to gain access to the database applicationDB = new Database(); applicationDB.open( "FastObjects://LOCAL/my_base“, Database.OPEN_READ_WRITE ); //... application code goes here... applicationDB.close } catch ( ODMGException e ) { // handle any exceptions... }

Transaktionen  Erzeugung als Instanz:  Transaction txn = new Transaction(db); zMethoden:  txn.begin()  txn.commit()  txn.abort()

Beispiel Database db = new Database(); db.open(... ); // create a transaction... Transaction txn = new Transaction( db ); // start the transaction... txn.begin(); //... // end the transaction (with commit)... txn.commit();

Datenmodellierung: Collections (1)

Datenmodellierung: Collections (2)

Datenmodellierung: Maps zInterface org.odmg.DMap zKlasse com.poet.odmg.util.MapOfObjects

Persistenz zPersistenz durch Erreichbarkeit zPersistenz durch Bindung von Instanzen an Namen (repräsentiert durch Zeichenketten) zAnonyme Persistenz

Bindungen von Instanzen an Namen zMethoden der Klasse Database: ybind(Object o, String name) xMyClass o = new MyClass(... ); xdb.bind(o, "test") ylookup(String name) xMyClass o = (MyClass) db.lookup("test") yunbind(String name) xdb.unbind("test")

Anonyme Persistenz zMethode der Klasse Database: ymakePersistent(Object o) ydeletePersistent(Object o) zZugriff auf anonyme Objekte über Klassen und Anfragesprache

Zugriff auf Objekte zZugriff über Klassen (Extents) zZugriff über Anfragesprache: yObject Query Language

Extents zExtents enthalten alle Instanzen einer Klasse zExtents werden vom System verwaltet zKonstruktor: yDatabase db; String className; yExtent ext = new Extent(db, className) zMethoden: yboolean hasNext() yObject next() yint size() yext.setFilter(String filter)

Beispiel String dbName = new String( "FastObjects://LOCAL/product_base" ); Database db = new Database(); db.open( dbName, Database.OPEN_READ_WRITE ); Transaction txn = new Transaction(); txn.begin(); Extent extentPerson = new Extent( db, "Person" ); // perform operations with the Person objects... txn.commit();

Beispiel //... // print all stored instances of MyClass Extent myInstances = new Extent(db, "MyClass"); while ( myInstances.hasNext() ) { System.out.println( myInstancees.next() ); } //...

Indizierung zExtents können "indiziert" werden, d.h. yes kann eine Ordnung definiert werden und yman kann mit quasi-konstantem Aufwand auf eine bestimmte Instanz zugreifen zDetails können wir hier nicht besprechen

Filter für Extents Database db = new Database(); db.open(... ); Transaction txn = new Transaction( db ); txn.begin(); Extent engineerExtent = new Extent( db, "Engineer" ); String predicate = "WHERE this.name_ LIKE \"*Schmidt*\""; engineerExtent.setFilter( predicate ); while (engineerExtent.hasNext() ) { System.out.println( engineerExtent.next() ); }

OQL: Object Query Language zKlasse OQLQuery zKonstruktoren: yOQLQuery() yOQLQuery(String query) zMethoden: ycreate(String predicate) yexecute()

OQL zSyntax an SQL angelehnt: zDefinitionen yDEFINE EXTENT FOR zSelektion: ySELECT FROM AS WHERE zNavigation: ySELECT FROM AS WHERE

Bedingungen zVergleiche yfür numerische Werte: =, >=, >, <=, < yfür Zeichenketten: =, LIKE (+ regulärem Ausdruck) zBoolesche Operationen: AND, OR, NOT

Beispiel (1) db.open("FastObjects://LOCAL/ToolsBase", Database.OPEN_READ_WRITE ); Transaction txn = new Transaction( toolsBase ); txn.begin(); // Here is the OQL string for the query... String queryString = "SELECT c FROM ToolkitExtent AS c " + "WHERE c.year_ = 1997"; // create a new query object... OQLQuery query = new OQLQuery( queryString ); // perform the query... Object result = query.execute(); // evaluate the result...

Beispiel (2) if ( result instanceof CollectionOfObject ) { long n = ((CollectionOfObject) result).size(); System.out.println( "found " + n + " objects" ); Iterator iter = ((CollectionOfObject) result).iterator(); while ( iter.hasNext() ) { Object obj = iter.next(); System.out.println( obj.toString() ); } // no need to save anything... txn.abort(); // close the database... toolsBase.close()

Anfragen mit Parametern zKennzeichung von formalen Parametern in Anfragezeichenketten durch spezielle Namen y$1, $2, $3,... zMethode zum Binden von Aktualparametern yQuery.bind(String parameter,...)

Beispiel //... OQLQuery query = new OQLQuery( txn ); // The toolkits managed by... query.create( "SELECT c FROM ToolkitExtent AS c, " + "c.managers_ AS d " + "WHERE d.indexName_ = $1" ); //... Tom Avery String manager = "Avery, Tom"; query.bind( manager ); Object resultObj = query.execute(); //...

Zusammenfassung, Kernpunkte zÜberblick über den ODMG-Standard yObject Definition Language = Java yObject Manipulation Language xKlassen: Database, Transaction, Extent, Query yObject Query Language

Was kommt beim nächsten Mal? zFortsetzung OQL zSchema-Versionierung