78
Datenbankstammtisch Dresden, 27. November 2002 Datenbanken & Java Datenbanken & Java Gunter Saake Institut für Technische und Betriebliche Informationssysteme Otto-von-Guericke-Universität Magdeburg [email protected]

Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Embed Size (px)

Citation preview

Page 1: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

DatenbankstammtischDresden, 27. November 2002

Datenbanken & JavaDatenbanken & Java

Gunter Saake

Institut für Technische und Betriebliche InformationssystemeOtto-von-Guericke-Universität [email protected]

Page 2: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

1. Überblick

Datenbanken & Java 2Gunter Saake

MotivationJava und DB-AnwendungsentwicklungJDBCEmbedded SQL: SQLJJava im DB-ServerJava und OO-DatenbankenObjektrelationale AbbildungAusblick

Page 3: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

2. Motivation

Datenbanken & Java 3Gunter Saake

Datenbanken: Basis vieler Anwendungssysteme Internet-Anwendungen, E-CommerceBetriebliche Informationssysteme

Java als Plattform für Entwicklung solcher Anwendungen

ObjektorientierungPlattformunabhängigkeitVielzahl von verfügbaren Bibliotheken

Datenbankzugriff mit Java

Page 4: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

DB-Anwendungsentwicklung

Datenbanken & Java 4Gunter Saake

Kopplung von SQL und prozeduralerProgrammiersprache

prozedurale Schnittstelle (Call-Level-Interface)ODBC, JDBC

Einbettung von SQLEmbedded SQL, SQLJ

Spracherweiterungen, neue SprachentwicklungenPersistente ProgrammiersprachenPL/SQL

Impedance Mismatch: unterschiedliche Datenstrukturkonzepte

Page 5: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Cursor-Konzept

Datenbanken & Java 5Gunter Saake

MotivationSQL: Konzept der Relation als Menge von TupelnProgrammiersprache: Tupel/Objekt als Datenstruktur

Verbindung Relation - Tupeltupelweiser Zugriff auf Elemente einer Menge (Relation)Navigation über Menge

Page 6: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Cursor-Konzept

Datenbanken & Java 6Gunter Saake

Anwendungsprogramm Datenbank

SQLJava

RelationCursor

Page 7: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

DB-Anwendungsarchitekturen

Datenbanken & Java 7Gunter Saake

Schichten interaktiver DB-AnwendungenPräsentation und BenutzerinteraktionAnwendungslogikDatenmanagementfunktionalität

Benutzerschnittstelle

Anwendungslogik

DB-Schnittstelle

Client

DB-Server

DBMS-Protokoll

Benutzerschnittstelle

Anwendungslogik

DB-Schnittstelle

Client

Applikations-server

DB-Server

DBMS-Protokoll

CORBA, RMI, HTTP, …

Page 8: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Warum Java ?

Datenbanken & Java 8Gunter Saake

Java ist eine imperative / objektorientierte Programmiersprache

geeignet zur klassischen Anwendungsentwicklunggeeignet für Funktionen / Prozeduren im Datenbankmanagementsystemviele Bibliotheken insb. für Benutzerinteraktion

Ausführungsmodell erlaubtsicheren Code (Sandkasten)Nachladen zur Laufzeit

Page 9: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Java und Datenbanken

Datenbanken & Java 9Gunter Saake

Einsatz von Java in DB-Anwendungenauf Client-Seite:

Applets, DB-Applikationenauf Server-Seite:

DB-Erweiterungen (gespeicherte Prozeduren, benutzerdefinierte Datentypen)

mittlere Ebene:Anwendungslogik (JavaBeans, CORBA, RMI)

Anbindung Java - DatenbankJDBC (Call-Level-Schnittstelle)SQLJ (Embedded SQL)ODMG (ODBMS- und ODM-Zugriff)

Page 10: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Java und DB-Anwendungen

Datenbanken & Java 10Gunter Saake

Benutzerschnittstelle

Anwendungslogik

DB-Schnittstelle

Client

DB-Server

DBMS-Protokoll

Benutzerschnittstelle

Anwendungslogik

DB-Schnittstelle

Client

Applikations-server

DB-Server

DBMS-Protokoll

CORBA, RMI, HTTP, …

JDBC, SQLJ,ODMG, ODM

Gesp. Prozeduren,benutzerdefinierteDatentypen

Page 11: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

3. JDBC: Überblick

Datenbanken & Java 11Gunter Saake

Datenbankzugriffsschnittstelle für Javaabstrakte, datenbankneutrale Schnittstellevergleichbar mit ODBCLow-Level-API: direkte Nutzung von SQLJava-Package java.sqlKlassen

DriverManager: Einstiegspunkt, Laden von TreibernConnection: DatenbankverbindungStatement: Ausführung von Anweisungen über eine VerbindungResultSet: verwaltet Ergebnisse einer Anfrage, Zugriff auf einzelne Spalte

Page 12: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

JDBC-Struktur

Datenbanken & Java 12Gunter Saake

DriverManager Connection

Statement Statement Statement

ResultSet

getConnection ()

createStatement ()

executeQuery ()

Page 13: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Treiberkonzept

Datenbanken & Java 13Gunter Saake

Treibermanagerabstrakte Klassen für Datenbankzugriffdynamisches Laden von TreibernAuswahl des geeigneten Treibers über Verbindungsdaten

JDBC-Applikation

Treibermanager

Treiber Treiber

JDBC-API

Page 14: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Ablauf

Datenbanken & Java 14Gunter Saake

1. Aufbau einer Verbindung zur DatenbankAngabe der VerbindungsinformationenAuswahl und Laden des Treibers

2. Senden einer SQL-AnweisungDefinition der AnweisungBelegung von Parametern

3. Verarbeiten der AnfrageergebnisseNavigation über ErgebnisrelationZugriff auf Spalten

Page 15: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Verbindungsaufbau

Datenbanken & Java 15Gunter Saake

1. Treiber ladenClass.forName ("com.company.DBDriver");

2. Verbindung herstellenConnection con;String url = "jdbc:subprotocol:datasource";

con = DriverManager.getConnection (url, "scott", "tiger");

JDBC-URL spezifiziertDatenquelle/DatenbankVerbindungsmechanismus (Protokoll, Server-Host und Port)

Page 16: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Anfrageausführung

Datenbanken & Java 16Gunter Saake

1. Anweisungsobjekt (Statement) erzeugenStatement stmt = con.createStatement ();

2. Anweisung ausführenString query = "SELECT titel, preis FROM buch";ResultSet rset = stmt.executeQuery (query);

Klasse java.sql.StatementAusführung von Anfragen (SELECT) mit executeQueryAusführung von Änderungsanweisungen (DELETE, INSERT, UPDATE) mit executeUpdate

Page 17: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Anfrageformen

Datenbanken & Java 17Gunter Saake

StatementBasisklasse für alle AnweisungenVerarbeitung einfacher SQL-Anweisungen ohne Parameter

PreparedStatementKapselung einer vorkompilierten AnweisungparametrisierbarVerwendung: wiederholte Ausführung einer Anweisung (mit verschiedenen Parametern)

CallableStatementAufruf von gespeicherten Prozeduren mit Parametern

Page 18: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Ergebnisverarbeitung

Datenbanken & Java 18Gunter Saake

1. Navigation über Ergebnismenge (Cursor-Prinzip)while (rset.next ()) {

// Verarbeitung der einzelnen Tupel...

}

2. Zugriff auf Spaltenwerte über getType-Methoden

über SpaltenindexString titel = rset.getString (1);

über SpaltennameString titel = rset.getString ("titel");

Page 19: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Fehlerbehandlung

Datenbanken & Java 19Gunter Saake

Fehlerbehandlung mittels Exception-MechanismusSQLException für alle SQL- und DBMS-Fehlertry {

// Aufruf von JDBC-Methoden...

} catch (SQLException exc) {System.out.println ("SQLException: " +

exc.getMessage ());}

Page 20: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Änderungsoperationen

Datenbanken & Java 20Gunter Saake

DDL- und DML-Operationen mittels executeUpdate

liefert Anzahl der betroffenen Zeilen (für DML-Operationen)Statement stmt = con.createStatement ();int rows = stmt.executeUpdate (

"UPDATE buch SET bestand = bestand-1" +" WHERE isbn = '12345' ");

Page 21: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Transaktionssteuerung

Datenbanken & Java 21Gunter Saake

Methoden von Connectioncommit ()rollback ()

Auto-Commit-Modusimplizites Commit nach jeder AnweisungTransaktion besteht nur aus einer AnweisungUmschalten mittels setAutoCommit (boolean)

Page 22: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Beispiel für Transaktionssteuerung

Datenbanken & Java 22Gunter Saake

try {// AutoCommit-Modus ausschaltencon.setAutoCommit (false);

// mehrere DML-Anweisungen...

// COMMIT ausführencon.commit ();

} catch (SQLException exc) {// Änderungen zurücknehmencon.rollback ();

}

Page 23: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Aufruf von gespeicherten Prozeduren

Datenbanken & Java 23Gunter Saake

java.sql.CallableStatement

Aufruf von gespeicherten Prozeduren (Stored Procedures)Übergabe von IN-, INOUT- und OUT-ParameternIN-Parameter

wie bei PreparedStatementOUT-Parameter

Registrierung des SQL-TypsAuslesen der Ergebniswerte mit getXXX-Methoden

Page 24: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

JDBC-Beispiel

Datenbanken & Java 24Gunter Saake

try {// VerbindungsaufbauConnection con = DriverManager.getConnection (

url, user, passwd);// AnfrageausführungStatement stmt = con.createStatement ();ResultSet rs = stmt.executeQuery (

"SELECT titel, preis FROM buch");while (rs.next ()) {

System.out.println (rs.getString (1) +", " + rs.getDouble (2));

}} catch (SQLException exc) {

// FehlerbehandlungSystem.out.println (exc);

}

Page 25: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Zugriff auf Metadaten

Datenbanken & Java 25Gunter Saake

Metadaten: Informationen über Nutzdaten (Tabellen, Sichten, Spalten, ...)java.sql.ResultSetMetaData

Informationen über Struktur des Anfrageergebnisses

java.sql.DatabaseMetaData

Informationen über Eigenschaften/Fähigkeiten des DBMSDaten aus dem Schemakatalog

Page 26: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Bsp.: Struktur von Anfrageergebnissen

Datenbanken & Java 26Gunter Saake

// Anfrage ausführenResultSet rs = stmt.executeQuery ( ... );

// Metadaten ermittelnResultSetMetaData rsmeta = rs.getMetaData ();

// Anzahl der Spaltenint ncols = rsmeta.getColumnCount ();

for (int i = 1; i <= ncols; i++) {// Name der SpalteString cn = rsmeta.getColumnName (i);// Typname der SpalteString ctn = rsmeta.getColumnTypeName (i);...

}

Page 27: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

4. SQLJ

Datenbanken & Java 27Gunter Saake

Industriekonsortium führender DBMS-Hersteller (IBM, Oracle, Sybase, Cloudscape, Sun)Spezifikationen

Part 0: Embedded SQL für Java (ANSI-Standard)Part 1: Java Stored ProceduresPart 2: Java-Klassen für benutzerdefinierte SQL-Datentypen

Page 28: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Embedded SQL: Überblick

Datenbanken & Java 28Gunter Saake

Einbettung von SQL-Anweisungen in Java-QuelltextVorübersetzung des erweiterten Quelltextes in „echten“Java-Code durch Translator sqljÜberprüfung der SQL-Anweisungen

korrekte SyntaxÜbereinstimmung der Anweisungen mit DB-SchemaTypkompatibilität der für Datenaustausch genutzten Variablen

Nutzung von JDBC-Treibern

Page 29: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Embedded SQL: Prinzip

Datenbanken & Java 29Gunter Saake

Java-Quelltextmit SQLJava-Quelltext

Bytecode

SQLJ-Translator

SQLJ-Laufzeitsystem

JDBC

Java-Compiler

Page 30: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

SQLJ-Anweisungen

Datenbanken & Java 30Gunter Saake

Kennzeichnung durch #sqlDeklarationen

Klassendefinitionen für IteratorenSQL-Anweisungen

Anfragen, DML- und DDL-Anweisungen#sql { SQL-Operation };

Beispiel#sql { INSERT INTO buch VALUES ("Datenbanken", 59.00, "123456", "MITP")

};

Page 31: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Host-Variablen

Datenbanken & Java 31Gunter Saake

Variablen einer Host-Sprache (hier Java), die in SQL-Anweisungen auftreten könnenVerwendung: Austausch von Daten zwischen Host-Sprache und SQLKennzeichnung durch ":variable"Beispiel:String titel, isbn = "123456";#sql { SELECT titel INTO :titel FROM buch

WHERE isbn = :isbn };

Page 32: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Iteratoren

Datenbanken & Java 32Gunter Saake

Implementierung des Cursor-KonzeptesFormen:

benannte IteratorenZugriff auf Spalten des Ergebnisses über Methode mit dem Spaltennamen

PositionsiteratorenZugriff über Host-Variablen und FETCH-AnweisungZuordnung durch Position in der Anweisung

Page 33: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Iteratoren

Datenbanken & Java 33Gunter Saake

1. Deklaration des Iterators#sql public iterator BookIter (String titel,

double preis);

2. Definition des IteratorobjektesBookIter iter;

3. Ausführung der Anweisung#sql iter = { SELECT titel, preis FROM buch };

4. Navigationwhile (iter.next ()) {

System.out.println (iter.titel () + " " +iter.preis ());

}

Page 34: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

SQLJ: Beispiel

Datenbanken & Java 34Gunter Saake

#sql public iterator BookIter (String titel,double preis);try {

// VerbindungsaufbauConnection con = DriverManager.getConnection (

url, user, passwd);DefaultContext ctx = new DefaultContext (con);DefaultContext.setDefaultContext (ctx);

// AnfrageausführungBookIter iter;

#sql iter = { SELECT titel, preis FROM buch };while (iter.next ())

System.out.println (iter.titel () +", " + iter.preis ());

} catch (SQLException exc) {System.out.println (exc);

}

Page 35: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

SQLJ-Translator

Datenbanken & Java 35Gunter Saake

SyntaxprüfungJava-Quelltext einschl. Host-AusdrückeSyntax der SQLJ-Klauseln (nicht SQL !)

SemantikprüfungOffline-Prüfung der Host-Ausdrücke

Einhaltung der TyprestriktionenOnline-Prüfung (optional)

Analyse der eingebetteten SQL-Operationen (nicht für DDL)Typkompatibilität zwischen Java und DB-Objekten

Customizingsystemspezifische Anpassung (z.B. zur Nutzung spezieller Datentypen oder optimierter Schnittstellen)auch nachträglich möglich über Profile

Page 36: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Interoperabilität mit JDBC

Datenbanken & Java 36Gunter Saake

Kombination von statischen und dynamischen SQL

Konvertierung zwischen Verbindungskontext und JDBC-VerbindungConnection con = DefaultContext.getDefaultContext().getConnection ();

Konvertierung zwischen Iterator und ResultSet#sql iter = { SELECT * FROM book };ResultSet rset = iter.getResultSet ();

Page 37: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Vergleich JDBC / SQLJ

Datenbanken & Java 37Gunter Saake

JDBC:Call-Level-Schnittstelledynamisches SQLhohe FlexibilitätFehlererkennung zur Laufzeit

SQLJ Part 0:Embedded-SQL-Lösungstatisches SQLFehlererkennung zur Compile-Zeit

Page 38: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

5. Java im DB-Server

Datenbanken & Java 38Gunter Saake

Java-VM als Teil des DBMSplattformneutrale und sichere Umgebung zur Ausführung von prozeduralen Anweisungen (sicherer Code, Sandbox)Erweiterung des DBMS (Prozeduren, Typen)

SQLJgespeicherte Prozeduren/Funktionen

Prozeduren, die im DB-Server gespeichert sind, dort ausgeführt werden und damit lokalen Zugriff auf die Daten habenUnterstützung in DB2, Oracle8i, Sybase Adaptive Server, Informix Cloudscape

Java-Klassen als SQL-Datentypenbenutzerdefinierte Java-Klassen, die als Spaltentypen von Datenbankrelationen verwendet werden können

Page 39: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Gespeicherte Prozeduren

Datenbanken & Java 39Gunter Saake

VorteileReduzierung der NetzwerkbelastungPerformance-Verbesserungzentrale Verwaltung (Sicherheit, Backup, Recovery, Administration)Unabhängigkeit vom Client-System

Applikation…CALL proc…

Applikation…CALL proc…

Applikation…CALL proc…

Java-Prozedur

Methode

Java-VM

Page 40: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Gespeicherte Prozeduren: Ablauf

Datenbanken & Java 40Gunter Saake

1. Implementierungals statische Methode einer Klasse (DB2: spezielle Klasse StoredProc)Default-Verbindung zur DatenbankDB-Zugriff über JDBC oder Embedded SQLBeispiel: JDBCpublic class MyProc {public static double price (int orderNo)

throws SQLException {Connection con = DriverManager.getConnection

("jdbc:default:connection");...

}}

Page 41: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Gespeicherte Prozeduren: Ablauf

Datenbanken & Java 41Gunter Saake

2. Installation im Serverals JAR-Archivsystemabhängig (spezielles Verzeichnis, DB-Tabelle)sqlj.install_jar('file:~/routines.jar', 'routines_jar', 0)

in Oracle8i spezielle Werkzeuge: loadjava, dropjava

Page 42: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Gespeicherte Prozeduren: Ablauf

Datenbanken & Java 42Gunter Saake

3. RegistrierungFestlegung des Names, der Parameter und der Zuordnung zur Java-MethodeCREATE PROCEDURE myproc (custNoINTEGER) MODIFIES SQL DATAEXTERNAL NAME 'routines_jar:Routines.Proc1'LANGUAGE JAVA PARAMETER STYLE JAVA;

automatisch über Deployment Descriptor

Page 43: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Gespeicherte Prozeduren: Ablauf

Datenbanken & Java 43Gunter Saake

4. Aufrufüber JDBC, Embedded SQL, andere APIin Anfragen bzw. DML-Operationendurch TriggerRestriktionen beim Einsatz in DML-Operationen

Keine TransaktionskommandosKeine Modifikation von Relationen in SELECTKein Zugriff auf zu ändernde Relationen in INSERT, UPDATE und DELETE

Page 44: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Java-SQL-Datentypen

Datenbanken & Java 44Gunter Saake

Verwendung von Java-Klassen als SQL-Datentypen für die Definition von AttributenUnterstützung in Sybase Adaptive Server, Informix Cloudscapebenutzerdefinierter SQL-Datentyp: Klasse mit Attributen und MethodenAblaufImplementierung → Installation und Registrierung → Nutzung

Page 45: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Java-SQL-Datentypen: Implementierung

Datenbanken & Java 45Gunter Saake

Klasse mit Schnittstelle java.io.SerializableAttribute zur Repräsentation von SQL-Daten als publicdefiniertzur Ausgabe: Definition der Methode toStringBeispiel:public class Address implementsjava.io.Serializable {

public int zip; public String city, street;

public Address () {zip = 0; city = street = "";

}...

}

Page 46: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Java-SQL-Datentypen: Registrierung

Datenbanken & Java 46Gunter Saake

Installation als JAR-Archiv über sqlj.install_jarSybase: INSTALL JAVA NEW FROM FILE 'Address.class';

Registrierung über erweitere Form von CREATE TYPE: Zuordnung der Klasse sowie der Attribute und MethodenBeispiel:CREATE TYPE Addr EXTERNAL NAME 'addr_jar:Address' LANGUAGE JAVA (

zip INTEGER EXTERNAL NAME 'zip',METHOD Addr () RETURNS AddrEXTERNAL NAME 'Address', ...);

Page 47: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Java-SQL-Datentypen: Nutzung

Datenbanken & Java 47Gunter Saake

Verwendung des neuen Datentyps zur Definition von Attributen einer RelationCREATE TABLE customer (

name VARCHAR(30),address Addr);

Initialisierung durch KonstruktorINSERT INTO customer ('Otto', new Addr ());

Zugriff auf Attribute und Methoden mittels SQL99-SyntaxSELECT address.zip, address.city FROM customer;

Sybase: spezielle Notation '>>'SELECT address>>zip, address>>city FROM customer;

Page 48: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

6. Java und OO-Datenbanken

Datenbanken & Java 48Gunter Saake

Java als Definitions- und Implementierungssprache für OODB-Anwendungen

direkte Speicherung von ObjektenEinsatzbereiche: Datenspeicher für einfache Java-Anwendungen → DBMS-Anbindung

Standard-Binding der ODMG für JavaEinführung mit ODMG 2.0Unterstützung durch Mehrzahl der Hersteller

Page 49: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

OO-Datenbanken

Datenbanken & Java 49Gunter Saake

Unterstützung von Nicht-Standard-Anwendungen komplexe Strukturen (Aggregationen und Assoziationen, strukturierte Eigenschaften)navigierende Zugriffesemantische Modellierungskonzepte (z.B. Spezialisierung)Überwindung des Impedance Mismatch (Kluft zwischen Typsystem des DBMS und der Programmiersprache)erweiterte Transaktionsmodelle (lange/kooperative Transaktionen)

Industriestandard: ODMG 3.0Systeme: POET, ObjectStore, Versant, ...

Page 50: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Java-Binding der ODMG

Datenbanken & Java 50Gunter Saake

PrinzipPersistenz durch Erreichbarkeit„persistenzfähige“ Klassen

BestandteileJava-ODL: Java als SchemadefinitionsspracheJava-OML: DB-Operationen und Manipulation von Objekten als „normale“ Java-MethodenODMG-API: Klassen für Datenbanken, Transaktionen und KollektionenOQL-Anbindung: Anfrageunterstützung

Page 51: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Persistenz durch Erreichbarkeit

Datenbanken & Java 51Gunter Saake

Objekt wird persistent, wenn es von einem anderen persistenten Objekt referenziert wirderfordert persistente (benannte) Wurzelobjekte

BenannteWurzelobjekte

Unbenannte Objekte

Page 52: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Java-ODL

Datenbanken & Java 52Gunter Saake

Java als SchemadefinitionsspracheDefinition von DB-Klassen in Javakeine Spracherweiterungen notwendig

Klassen, Vererbung, Attribute, Referenzen und Kollektionen, Methoden

Einschränkungen: keine Extensionen und Schlüssel, keine expliziten Beziehungen teilweise mittels zusätzlicher Property-Dateienumgehbar

Page 53: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Java-ODL: Beispiel

Datenbanken & Java 53Gunter Saake

public class Book {// atomare AttributeString isbn, title;double price;// 1:n-BeziehungListOfObject writtenBy;// n:1-BeziehungCategory classifiedIn;

public Book (String isbn) {this.isbn = isbn;writtenBy = new ListOfObject ();

}...

}

Page 54: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Generierung persistenzfähiger Klassen

Datenbanken & Java 54Gunter Saake

PräprozessorVerarbeitung einer Java-Klassendefinition (Quelltext) Extraktion benötigter Informationen (Vererbungsbeziehungen, Attribute, ...)Hinzufügen DB-spezifischen CodesKompilieren zu BytecodeBeispiel: POET

PostprozessorVerarbeitung und Modifikation von BytecodeNutzung existierender Klassen möglichBeispiel: ObjectStore

Page 55: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

ODMG-API

Datenbanken & Java 55Gunter Saake

Vordefinierte Klassen für DB-OperationenDatabase

Öffnen und Schließen einer DatenbankRegistrieren und Ermitteln benannter Wurzelobjekte

TransactionStart (begin), Abbruch (abort) und Commit(commit) von Transaktionen

Kollektionen Set, Bag, List, VArray

Page 56: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Java-OML: Beispiel

Datenbanken & Java 56Gunter Saake

// Datenbank öffnenDatabase db = Database.open (...);

// Transaktion startenTransaction tx = new Transaction.begin ();try {

// Wurzelobjekt besorgenBook b = (Book) db.lookup ("EinBuch");// und ändernb.setPrice (49.9);tx.commit ();

} catch (ODMGException exc) {tx.abort ();

}db.close ();

Page 57: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Navigation und Pfadausdrücke

Datenbanken & Java 57Gunter Saake

Navigation in komplexen Werten und Objektstrukturen über Pfade → Verfolgen von BeziehungenPfadausdruck: Konstruktion mit Punktoperator ausgehend von Objekt

Buchtitelpreis

Verlagnameadresse

herausgegebenVon1*

einBuch.herausgegebenVon.name

Page 58: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

OQL – Object Query Language

Datenbanken & Java 58Gunter Saake

OQL – Anfragesprache der ODMGSQL-Subset +

Nutzung von Objektidentitäten, Pfadausdrücken, Methoden und komplex strukturierten WertenAnfragen auf Mengen (z.B. Extensionen) und beliebigen Kollektionen

Anfrage mit relationaler, objekterhaltender und objektgenerierender Semantikeingeschränkte Unterstützung in kommerziellen Systemen

Page 59: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

OQL-Anbindung

Datenbanken & Java 59Gunter Saake

Klasse OQLQueryÜbergabe der OQL-AnfrageParametrisierung möglichErgebnis als Einzelobjekt oder Kollektion

BeispielOQLQuery q = new OQLQuery ("SELECT * FROM books");CollectionOfObject res = (CollectionOfObject) q;Enumeration e = res.elements ();while (e.hasMoreElements ()) {

Book b = (Book) e.nextElement ();...

}

Page 60: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

7. Objektrelationale Abbildung

Datenbanken & Java 60Gunter Saake

Idee: Abbildung von Anwendungsobjekten (Java) auf Datenbankrelationen (Object-to-Database Mapping)

OO auf der AnwendungsebeneNutzung der Vorteile von RDBMS (Sicherheit, Performance, ...)Werkzeugunterstützung

RichtungenForward Engineering: Java-Klassen → RelationenschemataReverse Engineering: Relationenschemata → Java-Klassen

Page 61: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Objektrelationale Abbildung: Prinzip

Datenbanken & Java 61Gunter Saake

Applikation

Anwendungs-objekte

Laufzeitsystem

Objekt-modell

Abbildungs-vorschrift

Datenbank-schema

Page 62: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Aspekte

Datenbanken & Java 62Gunter Saake

AbbildungKlassen ↔ RelationenschemataObjektidentifikatorenAttribute und BeziehungenVererbung (horizontale, vertikale oder typisierte Partitionierung)

Laufzeitstatisch vs. dynamischVerwaltung von ObjektpuffernVerfolgen von ReferenzenSynchronisation konkurrierender Zugriffe (optimistische vs. pessimistische Verfahren)

Page 63: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Abbildung von Vererbungsbeziehungen

Datenbanken & Java 63Gunter Saake

Horizontale PartitionierungRepräsentation der Blätter der Vererbungshierarchie als Tabelle: jede Tabelle enthält alle Attributevorteilhaft bei abstrakten Superklassen

Vertikale PartitionierungRepräsentation jeder Klasse der Vererbungshierarchie als Tabelle: Tabellen enthalten nur spezielle Attribute der jeweiligen KlasseAnfragen nur auf Superklassen effizient

Typisierte PartitionierungAbbildung aller Klassen in einer TabelleUnterscheidung durch Typattributeffizient, aber unflexibel (NULL-Werte, Erweiterung)

Page 64: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Java Blend

Datenbanken & Java 64Gunter Saake

Entwicklungs- und Laufzeitsystem zur objektrelationalen Abbildung (Sun Microsystems)Komponenten

Mapping-Werkzeug: Definition der Abbildung zwischen DB-Schema und Java-Klassen

Java→DB-Modus: Ableitung des Schemas aus KlassenDB→Java-Modus: Generierung von Klassen anhand eines Schemas

Präprozessor: Generierung persistenzfähiger KlassenLaufzeitsystem: Funktionen für Laufzeitaspekte und Anfrageausführung

Page 65: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Java-Blend: Mapping-Werkzeug

Datenbanken & Java 65Gunter Saake

DB → Java-ModusAuslesen eines existierenden DB-SchemasAnalyse der Relationenschemata und Fremdschlüsselbeziehungen (Beziehungen, Vererbung)Generierung einer Default-Abbildunginteraktive Anpassung mittels Mapping-Werkzeug

Java → DB-ModusAnalyse existierender Java-Klassen, Ableitung eines DB-SchemasVoraussetzungen

persistente Klassen implementieren Schnittstelle PersistenceCapableBeziehungen über Referenztypen oder Kollektionen der Klasse DCollection

Page 66: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Java-Blend-API

Datenbanken & Java 66Gunter Saake

DB-Zugriff über JDBC-TreiberODMG-konforme Schnittstelle

Klassen: Database, Transaction, Kollektionenexplizite Persistenz: Persistentmachen eines Objektes durch Aufruf von makePersistent

AnfragenOQL-Unterstützung inkl. Pfadausdrücke und MethodenaufrufeTransformation in SQL-AnfragenODMG-konforme Schnittstelle über OQLQuery

Page 67: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Weitere Systeme

Datenbanken & Java 67Gunter Saake

SQL Object Factory (POET)PowerTier (Persistence)Relational Object Framework (Watershed)...

Page 68: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Architekturvergleich

Datenbanken & Java 68Gunter Saake

Anwendungs-objekte

RDBMS ODBMS

ObjekttransferTransformationRelationaleRepräsentation

Page 69: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

8. Java Data Objects (JDO)

Datenbanken & Java 69Gunter Saake

Standard für transparente, herstellerneutrale ObjektpersistenzVerwaltung von Java-Objekten in

Objektdatenbanken (direkt, ohne Mapping)relationalen Datenbanken (über Mapping-Werkzeuge)

Fokus auf Java-ObjektmodellEinheitliche SchnittstelleUnterstützung von Applikationsservern (J2EE)

Weiterentwicklung/Anpassung von ODMG?

Page 70: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

JDO: Persistente Klassen

Datenbanken & Java 70Gunter Saake

Persistenz definiert für ausgewählte Java-KlassenKollektionen, String, benutzerdefinierte Klassen

Unterscheidung in First Class-Objekte: Objekte mit OIDSecond Class-Objekte: Objekte ohne eigene OID, nur eingebettet in andere Objekte

SpezifikationJava-KlassendefinitionJDO-XML-Datei mit zusätzlichen Infos (eingebettete Objekte, Elementtyp von Kollektionen etc.)

Code-Modifikation (.class-Files) durch Enhancer

Page 71: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

JDO: Speichern von Objekten

Datenbanken & Java 71Gunter Saake

Prinzip: Persistenz durch ErreichbarkeitKoordination über Instanz von Klasse PersistenceManager

persistentes Sichern durch expliziten Aufruf von makePersistent(obj)

Beispiel:PersistenceManager pm = …;Book book = new Book(…);pm.currentTransaction().begin();…pm.makePersistent(book);pm.currentTransaction().commit();

Page 72: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

JDO: Zugriff auf Objekte

Datenbanken & Java 72Gunter Saake

Zugriff auf DB-Objekte über Extension (Extent)Anfrage

Iterator über Extensionpm.currentTransaction().begin();Extent books = pm.getExtent(Book.class,

true);Iterator iter = boos.iterator();while (iter.hasNext()) {

Book book = (Book) iter.next();…

}

Page 73: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

JDO: Anfragespache

Datenbanken & Java 73Gunter Saake

JDOQL: einfache „Anfragesprache“Im Wesentlichen zum Wiederfinden von ObjektenKeine Verbunde, Gruppierung, Aggregation etc.Nur einfache Filterbedingungen

Beispiel:Extent books = pm.getExtent(Book.class,

true);String filter = "this.isbn.equals(\"1234\")";Query q = pm.newQuery(books, filter);Collection col = (Collection) q.execute();

Page 74: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

JDO: Systeme

Datenbanken & Java 74Gunter Saake

ODBMS-basiertFastObjects (FastObjects/Poet)enJin (Versant)

Objektrelationales MappingKodo (SolarMetric)Lido (LIBeLIS)JRelay (ObjectIndustries)…

Page 75: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

9. Weitere Aspekte

Datenbanken & Java 75Gunter Saake

Komponentenplattformen und ApplikationsserverEnterprise JavaBeans

TransaktionssteuerungNutzung von verteilten Transaktionen und Transaktionsmanagern über Java Transaction API und XAverteilte Anwendungen, Enterprise JavaBeans

Web-DB-AnbindungenServlets, Java Server Pages

XML-VerarbeitungXML-Parser, Dokument-API (DOM), Werkzeuge

Page 76: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Ausblick

Datenbanken & Java 76Gunter Saake

Java als persistente Programmiersprache ?Orthogonal persistentes Java (PJama/OPJ)

Typ-Orthogonalität: Persistenz für alle ObjektePersistenz durch Erreichbarkeit: Persistenz durch transitive Erreichbarkeit von WurzelobjektenPersistenz-Unabhängigkeit: identischer Programm-code für transiente und persistente Objekte

Charakteristikaspezielle VM für „Stabilisierung“ des Speicherskeine Anfragemechanismen

Page 77: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Ausblick

Datenbanken & Java 77Gunter Saake

Java in der DatenbankDatenbankerweiterungenJava zur plattformneutralen Implementierung von gespeicherten ProzedurenJava-Klassen als SQL-DatentypenNutzung der Java-Sicherheitskonzepte

Mobile DB-LösungenJava als DBMS-Implementierungssprache

Page 78: Datenbanken & Java - htw-dresden.dedbst/material/20021127_83_saake.pdf · Programmiersprache: Tupel/Objekt als Datenstruktur Verbindung Relation - Tupel tupelweiser Zugriff auf Elemente

Literatur

Datenbanken & Java 78Gunter Saake

Saake, Sattler: Datenbanken & Java: JDBC, SQLJ und ODMG, dpunkt.verlag, Heidelberg, Mai 2000, ISBN 3-932588-54-1