This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
AG Softwaretechnik Fachbereich 17 Mathematik/Informatik
JDBC & ODMG
Motivation- Beispielanwendung
JDBC
- DriverManager- Connection- Statement- ResultSet
Anwendung
ODMG
- Objektmodell /ODL- OQL- Java-Binding
Anwendung
Vergleich
JDBC & ODMG
Entwicklung eines verteilten multimedia Systems mit Hilfe von Design Pattern
AG Softwaretechnik Fachbereich 17 Mathematik/Informatik
Motivation
JDBC & ODMG realisieren unterschiedliche Ansätze zum DB-Zugriff aus Java:
JDBC
• Paket von Klassen / Interfaces
• Bestandteil des JDK
• direkte Nutzung von SQL
ODMG-Standard
• definiert eigenes Datenmodell, Anfragesprache sowie diverse Programmiersprachenanbindungen für Objektdatenbanksysteme
Vorname Nachname Studiengang MatrNr
Philipp Hoven Informatik 1111111
Mike Liebrecht Informatik 2222222
JDBC & ODMG
Motivation- Beispielanwendung
JDBC
- DriverManager- Connection- Statement- ResultSet
Anwendung
ODMG
- Objektmodell /ODL- OQL- Java-Binding
Anwendung
Vergleich
AG Softwaretechnik Fachbereich 17 Mathematik/Informatik
Studentenverwaltung
Datenbankname Zugriffsart ODBC-Name Server StudiVerwaltung ODBC Studiverw Local
Attribute der Tabelle Studenten Vorname Nachname Studiengang MatrNr
JDBC & ODMG
Motivation- Beispielanwendung
JDBC
- DriverManager- Connection- Statement- ResultSet
Anwendung
ODMG
- Objektmodell /ODL- OQL- Java-Binding
Anwendung
Vergleich
AG Softwaretechnik Fachbereich 17 Mathematik/Informatik
JDBC
• Standardschnittstelle zum Zugriff auf relationale Datenbanken per SQL Anweisung in Java
• seit Java Version 1.1 Bestandteil der Standard-API
AG Softwaretechnik Fachbereich 17 Mathematik/Informatik
JDBC & ODMG
Motivation- Beispielanwendung
JDBC
- DriverManager- Connection- Statement- ResultSet
Anwendung
ODMG
- Objektmodell /ODL- OQL- Java-Binding
Anwendung
Vergleich
Treiber
Java Applikation
JDBC- Treibermanager
JDBC-Net-Treiber
Client Biblio-thek
Native- ProtokollTreiber
ODBC DB- Middle-ware
Native- API- Treiber
JDBC- ODBC- Bridge
Client Biblio-thek
JDBC-API
AG Softwaretechnik Fachbereich 17 Mathematik/Informatik
JDBC & ODMG
Motivation- Beispielanwendung
JDBC
- DriverManager- Connection- Statement- ResultSet
Anwendung
ODMG
- Objektmodell /ODL- OQL- Java-Binding
Anwendung
Vergleich
java.sql.Connection
Erzeugen eines Statement-Objektes:
Statement createStatement() throws SQLException;
Studiverwaltung:
import java.sql.* ;
public class DBRequest {
public static void main (String [] args) { try { // Laden des Treibers Class c = Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); // Aufbau der Verbindung zur DB Connection con = DriverManager.getConnection("jdbc:odbc:studiverw"); //Statement-Objekt erzeugen Statement stmt = con.createStatement(); ... Anfragen stellen, Ergebnisse behandeln... } catch (Exception e) { System.out.println( e ) ; } } }
AG Softwaretechnik Fachbereich 17 Mathematik/Informatik
AG Softwaretechnik Fachbereich 17 Mathematik/Informatik
JDBC & ODMG
Motivation- Beispielanwendung
JDBC
- DriverManager- Connection- Statement- ResultSet
Anwendung
ODMG
- Objektmodell /ODL- OQL- Java-Binding
Anwendung
Vergleich
import java.sql.* ;
public class DBRequest {
public static void main (String [] args) { try { Class c = Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con = DriverManager.getConnection("jdbc:odbc:studiverw"); makeDBRequest(con); } catch (Exception e) { System.out.println( e ); } }
class SHK:Student { ...void setGehalt ( in long matrNr);}
class Student {attribute long matrNr;attribute string vorname; ...}
Operationen
Objekttyp I Objekttyp II
Attribute
AG Softwaretechnik Fachbereich 17 Mathematik/Informatik
JDBC & ODMG
Motivation- Beispielanwendung
JDBC
- DriverManager- Connection- Statement- ResultSet
Anwendung
ODMG
- Objektmodell /ODL- OQL- Java-Binding
Anwendung
Vergleich
Object Query Language
Unterstützt folgende 3 Anfrage-Arten:
Relationale Anfrage (SQL-Anfrage)
Objekterhaltene Anfrage
Objekterzeugende Anfrage
SELECT b.kennzeichen FROM Auto b;
SELECT b FROM AUTO b WHERE b.farbe = „Rot“;
SELECT Personenkraftfahrzeuge (farbe: b.farbe, kennz: b.kennzeichen) FROM Auto b;
AG Softwaretechnik Fachbereich 17 Mathematik/Informatik
JDBC & ODMG
Motivation- Beispielanwendung
JDBC
- DriverManager- Connection- Statement- ResultSet
Anwendung
ODMG
- Objektmodell /ODL- OQL- Java-Binding
Anwendung
Vergleich
Java-Binding
Java-ODL
• Objekttypen und Literale werden auf Java-Klassen und primitive Datentypen abgebildet• Attribute / Operationen sind identisch mit Attributen / Methoden der jeweiligen Klassen• Exceptions werden direkt auf den selben Mechanismus in Java übertragen• Strukturen werden anhand von Java-Klassen nachgebildet• Extensionen werden nicht unterstützt• Kollektionen werden durch SetOfObject, BagOfObject, ListOfObject ... realisiert
Java-OML
• Database• Transaction
AG Softwaretechnik Fachbereich 17 Mathematik/Informatik
Beispielanwendung für POET
/* * Konfigurationsdatei: * ptjavac.opt * * (impliziter) Aufruf durch den Precompiler-Aufruf: * ptjavac -xc *.java */
[schemata\my_dict1] ; so heisst das Dictionary (=Schema) oneFile = false
[databases\my_db] ; dieser Eintrag legt den Namen der DB festoneFile = false
[classes\Student] ; Hier wird die persistenzfähige Klasse festgelegtpersistent = true ; diese Klasse ist persistent
public class Student { Private String vorname, nachname, studiengang; Prviate int matrNr;
AG Softwaretechnik Fachbereich 17 Mathematik/Informatik
Beispielanwendung für POET
import COM.POET.odmg.*;
public class Lookup{ static void holeObjekt(Database db) throws ODMGException { Transaction txn = new Transaction(); txn.begin();
try { Student myStudent = (Student)db.lookup("myName"); System.out.println(myStudent); } catch (Exception exc) { txn.abort(); // Sperre freigeben, weil Objekt nicht da ist throw exc; // Ausnahme an Aufrufumgebung melden }
public class Bind { static void binde(Database db) throws ODMGException { Transaction txn = new Transaction(); txn.begin(); try { Student myStudent = new Student("Mike","Lieb",”Inf”,32); db.bind(myStudent, "myName"); } catch (Exception exc) { txn.abort(); throw exc; } txn.commit(); // Erfolgreiche Transaktion } public static void main(String[] args) throws ODMGException { Database db = Database.open("poet://LOCAL/my_db", Database.openReadWrite); // try {binde(db);} finally { db.close(); } // DB wir geschlossen }}
JDBC & ODMG
Motivation- Beispielanwendung
JDBC
- DriverManager- Connection- Statement- ResultSet
Anwendung
ODMG
- Objektmodell /ODL- OQL- Java-Binding
Anwendung
Vergleich
AG Softwaretechnik Fachbereich 17 Mathematik/Informatik
Vergleich JDBC + SQL ODMG
- JDBC ist nur eine Schnittstelle zwischen Java und den relationalen Datenbanken
- Daten werden in Tabellen
gespeichert (SQL) - Art der Speicherung gut geeignet
um große Mengen gering strukturierter Daten zu verwalten
- JDBC bietet lediglich eine
Kapselung von SQL-Anweisungen, keine Abstraktion, Rückgriff auf SQL
- Impedance – Missmatch,
Tabelle Objektorientierung - Verfahren für CASE-SYSTEME
nicht geeignet, da keine Modellierung von Spezialisierung, Assoziation etc. möglich
- ODMG neu entwickeltes wesentlich umfangreicheres Konzept. Besteht aus objektorientierter DB (incl. Objektmodell etc.) + Schnittstellen zu mehreren Programmiersprachen, unter anderem Java
- Daten werden als Objekte (mit ihren
Eigenschaften, gekapselt als Attribute, in den Objekten) in einem / mehreren Objektbäumen gespeichert
- Durch die Kapselung der Eigenschaften
in den Objekten sehr gut geeignet um komplexe, stark strukturierte Daten zu speichern
- Anhand des Java-Binding werden
Elemente der Sprache Java direkt auf Objekte der Datenbank abgebildet
- Kein Modellierungsbruch
JDBC & ODMG
Motivation- Beispielanwendung
JDBC
- DriverManager- Connection- Statement- ResultSet
Anwendung
ODMG
- Objektmodell /ODL- OQL- Java-Binding
Anwendung
Vergleich
AG Softwaretechnik Fachbereich 17 Mathematik/Informatik