JDBC & ODMG Motivation - Beispielanwendung JDBC - DriverManager - Connection - Statement - ResultSet...
-
Upload
annikin-leffler -
Category
Documents
-
view
104 -
download
0
Transcript of JDBC & ODMG Motivation - Beispielanwendung JDBC - DriverManager - Connection - Statement - ResultSet...
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
•Package java.sql•java.sql.DriverManager•java.sql.Connection•java.sql.Statement•java.sql.ResultSet•java.sql.ResultSetMetaData
• “Low-Level-API”
JDBC & ODMG
Motivation- Beispielanwendung
JDBC
- DriverManager- Connection- Statement- ResultSet
Anwendung
ODMG
- Objektmodell /ODL- OQL- Java-Binding
Anwendung
Vergleich
AG Softwaretechnik Fachbereich 17 Mathematik/Informatik
Genereller Ablauf einer DB-Anbindung via JDBC
JDBC & ODMG
Motivation- Beispielanwendung
JDBC
- DriverManager- Connection- Statement- ResultSet
Anwendung
ODMG
- Objektmodell /ODL- OQL- Java-Binding
Anwendung
Vergleich
GetConnection() getConnection() createStatement() executeQuery() getMetaData()
DriverManager Connection
ResultSet
Statement Statement
ResultSet ResultSet MetaData
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.DriverManager
Laden des Treibers:
Class c = Class.forName („oracle.jdbc.driver.OracleDriver“);
Verbindungsaufbau zur Datenbank:
static Connection getConnection (String url) throws SQLException; static Connection getConnection (String url, String user, String pw) throws SQLException; static Connection getConnection (String url, java.util.Properties info) throws SQLException;
„jdbc:odbc:odbc2access“ „jdbc:oracle:thin:@ipl6.upb.de:1521:mydb“
Beispiele URL:
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
JDBC & ODMG
Motivation- Beispielanwendung
JDBC
- DriverManager- Connection- Statement- ResultSet
Anwendung
ODMG
- Objektmodell /ODL- OQL- Java-Binding
Anwendung
Vergleich
java.sql.Statement
ResultSet executeQuery (String sql) throws SQLException;
int executeUpdate (String sql) throws SQLException;
boolean execute (String sql) throws SQLException;
Einfache SQL-Anfrage:
DML- oder DDL-Befehl:
Sequenz von SQL-Befehlen:
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.ResultSet / java.sql.ResultSetMetaData
ResultSet
XXX getXXX (String colName) throws SQLException; XXX getXXX (int colIndex) throws SQLException;
Zugriff auf einzelne Attribute:
Zugriff auf einzelne Tupel:
boolean next();
ResultSetMetaData
int getColumnCount() throws SQLException; String getTableName (int col) throws SQLException; int getColumnType (int col) throws SQLException; String getColumnTypeName (int col) throws SQLException; ...
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 ); } }
public static void makeDBRequest (Connection con) { try { Statement stmt = con.createStatement(); ResultSet rsStudent = stmt.executeQuery( "SELECT * FROM Studenten") ; System.out.println( “Vorname , Nachname , Matrikelnummer”); while (rsStudent.next()) { System.out.println( rsStudent.getString(Vorname)+ “,” +rsStudent.getString (Nachname) + “,” + rsStudent.getInt(MatrNr)); } } catch (Exception e) { System.out.println( e ); } rsStudent.close(); stmt.close(); }}
Anwendung
AG Softwaretechnik Fachbereich 17 Mathematik/Informatik
JDBC & ODMG
Motivation- Beispielanwendung
JDBC
- DriverManager- Connection- Statement- ResultSet
Anwendung
ODMG
- Objektmodell /ODL- OQL- Java-Binding
Anwendung
Vergleich
ODMG-Standard
Definiert wichtigsten Eigenschaften eines ODBMS
•Objektmodell•ODL /OIF•OQL•diverse Bindings
Zusätzliche Eigenschaften
•Typkonstruktoren•Klassen, Methoden•Vererbung, Extension, •Persistenz•Objekt-Identität
AG Softwaretechnik Fachbereich 17 Mathematik/Informatik
JDBC & ODMG
Motivation- Beispielanwendung
JDBC
- DriverManager- Connection- Statement- ResultSet
Anwendung
ODMG
- Objektmodell /ODL- OQL- Java-Binding
Anwendung
Vergleich
Objektmodell / ODL
interface UniAngestellter {void startJob() raises (JstartException);void stopJob() raises (JstopException);void setGehalt(in long gehalt);};
class StudentHöxter (extent Student) {…}
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;
public Student (String vname, String nname, String stgang, int matNr.) { vorname=vname ; nachname=nname ; studiengang=stgang ; matrNr = matNr ;}
public String getNachname() { return nachname;}
…}
JDBC & ODMG
Motivation- Beispielanwendung
JDBC
- DriverManager- Connection- Statement- ResultSet
Anwendung
ODMG
- Objektmodell /ODL- OQL- Java-Binding
Anwendung
Vergleich
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 }
txn.commit(); // T war o.K. }
public static void main(String[] args) throws ODMGException { Database db = Database.open("poet://LOCAL/my_base1", Database.openReadWrite); try { holeObjekt(db); } finally { db.close(); } }}
import COM.POET.odmg.*;import java.util.*;
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
JDBC & ODMG
Motivation- Beispielanwendung
JDBC
- DriverManager- Connection- Statement- ResultSet
Anwendung
ODMG
- Objektmodell /ODL- OQL- Java-Binding
Anwendung
Vergleich
E N D E