JDBC

Werbung
Entwicklung eines verteilten multimedia Systems mit Hilfe von Design Pattern
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
JDBC & ODMG realisieren unterschiedliche Ansätze zum DB-Zugriff aus Java:
JDBC
&
ODMG
Motivation
- Beispielanwendung
JDBC
- DriverManager
- Connection
- Statement
- ResultSet
JDBC
ODMG-Standard
• Paket von Klassen / Interfaces
• definiert eigenes Datenmodell,
Anfragesprache sowie diverse
Programmiersprachenanbindungen für
Objektdatenbanksysteme
• Bestandteil des JDK
• direkte Nutzung von SQL
Anwendung
ODMG
- Objektmodell /ODL
- OQL
- Java-Binding
Anwendung
Vergleich
AG Softwaretechnik
Fachbereich 17
Mathematik/Informatik
Vorname
Nachname Studiengang MatrNr
Philipp
Mike
Hoven
Liebrecht
Informatik
Informatik
1111111
2222222
Studentenverwaltung
JDBC
&
ODMG
Motivation
- Beispielanwendung
JDBC
- DriverManager
- Connection
- Statement
- ResultSet
Anwendung
ODMG
- Objektmodell /ODL
- OQL
- Java-Binding
Anwendung
Vergleich
AG Softwaretechnik
Fachbereich 17
Mathematik/Informatik
Datenbankname
StudiVerwaltung
Zugriffsart
ODBC
ODBC-Name
Studiverw
Server
Local
Vorname
Attribute der Tabelle Studenten
Nachname
Studiengang
MatrNr
JDBC
JDBC
&
ODMG
Motivation
- Beispielanwendung
JDBC
- DriverManager
- Connection
- Statement
- ResultSet
Anwendung
ODMG
- Objektmodell /ODL
- OQL
- Java-Binding
Anwendung
Vergleich
AG Softwaretechnik
Fachbereich 17
Mathematik/Informatik
• 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”
Genereller Ablauf einer DB-Anbindung via JDBC
JDBC
&
ODMG
GetConnection()
DriverManager
Motivation
- Beispielanwendung
getConnection()
Connection
createStatement()
JDBC
- DriverManager
- Connection
- Statement
- ResultSet
Statement
Statement
executeQuery()
Anwendung
ODMG
- Objektmodell /ODL
- OQL
- Java-Binding
ResultSet
MetaData
ResultSet
getMetaData()
Anwendung
Vergleich
AG Softwaretechnik
Fachbereich 17
Mathematik/Informatik
ResultSet
java.sql.DriverManager
JDBC
Laden des Treibers:
&
ODMG
Class c = Class.forName („oracle.jdbc.driver.OracleDriver“);
Motivation
- Beispielanwendung
JDBC
- DriverManager
- Connection
- Statement
- ResultSet
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;
Anwendung
ODMG
- Objektmodell /ODL
- OQL
- Java-Binding
Beispiele URL:
Anwendung
Vergleich
AG Softwaretechnik
Fachbereich 17
Mathematik/Informatik
„jdbc:odbc:odbc2access“
„jdbc:oracle:thin:@ipl6.upb.de:1521:mydb“
Treiber
Java Applikation
JDBC-API
JDBC
&
ODMG
JDBCTreibermanager
Motivation
- Beispielanwendung
JDBC
- DriverManager
- Connection
- Statement
- ResultSet
NativeProtokoll
Treiber
JDBCNetTreiber
JDBCODBCBridge
NativeAPITreiber
DBMiddleware
ODBC
Client
Bibliothek
Anwendung
ODMG
- Objektmodell /ODL
- OQL
- Java-Binding
Anwendung
Vergleich
AG Softwaretechnik
Fachbereich 17
Mathematik/Informatik
Client
Bibliothek
java.sql.Connection
Erzeugen eines Statement-Objektes:
JDBC
&
ODMG
Motivation
- Beispielanwendung
JDBC
- DriverManager
- Connection
- Statement
- ResultSet
Anwendung
ODMG
- Objektmodell /ODL
- OQL
- Java-Binding
Anwendung
Vergleich
AG Softwaretechnik
Fachbereich 17
Mathematik/Informatik
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 ) ; }
}
}
java.sql.Statement
Einfache SQL-Anfrage:
JDBC
&
ODMG
ResultSet executeQuery (String sql) throws SQLException;
Motivation
- Beispielanwendung
JDBC
- DriverManager
- Connection
- Statement
- ResultSet
Anwendung
DML- oder DDL-Befehl:
int executeUpdate (String sql) throws SQLException;
Sequenz von SQL-Befehlen:
ODMG
boolean execute (String sql) throws SQLException;
- Objektmodell /ODL
- OQL
- Java-Binding
Anwendung
Vergleich
AG Softwaretechnik
Fachbereich 17
Mathematik/Informatik
java.sql.ResultSet / java.sql.ResultSetMetaData
ResultSet
JDBC
&
ODMG
Motivation
- Beispielanwendung
Zugriff auf einzelne Tupel:
boolean next();
JDBC
- DriverManager
- Connection
- Statement
- ResultSet
Zugriff auf einzelne Attribute:
XXX getXXX (String colName) throws SQLException;
XXX getXXX (int colIndex) throws SQLException;
Anwendung
ODMG
- Objektmodell /ODL
- OQL
- Java-Binding
Anwendung
Vergleich
AG Softwaretechnik
Fachbereich 17
Mathematik/Informatik
ResultSetMetaData
int getColumnCount() throws SQLException;
String getTableName (int col) throws SQLException;
int getColumnType (int col) throws SQLException;
String getColumnTypeName (int col) throws SQLException;
...
Anwendung
import java.sql.* ;
public class DBRequest {
JDBC
&
ODMG
Motivation
- Beispielanwendung
JDBC
- DriverManager
- Connection
- Statement
- ResultSet
Anwendung
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") ;
ODMG
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();
- Objektmodell /ODL
- OQL
- Java-Binding
Anwendung
Vergleich
}
}
AG Softwaretechnik
Fachbereich 17
Mathematik/Informatik
ODMG-Standard
Definiert wichtigsten Eigenschaften eines ODBMS
JDBC
&
ODMG
Motivation
- Beispielanwendung
JDBC
- DriverManager
- Connection
- Statement
- ResultSet
Anwendung
•Objektmodell
•ODL /OIF
•OQL
•diverse Bindings
Zusätzliche Eigenschaften
ODMG
- Objektmodell /ODL
- OQL
- Java-Binding
Anwendung
Vergleich
AG Softwaretechnik
Fachbereich 17
Mathematik/Informatik
•Typkonstruktoren
•Klassen, Methoden
•Vererbung, Extension,
•Persistenz
•Objekt-Identität
Objektmodell / ODL
JDBC
Objekttyp I
Objekttyp II
interface UniAngestellter {
void startJob() raises (JstartException);
void stopJob() raises (JstopException);
void setGehalt(in long gehalt);
};
class StudentHöxter (extent Student) {
…
}
Operationen
Attribute
class SHK:Student {
...
void setGehalt ( in long matrNr);
}
class Student {
attribute long matrNr;
attribute string vorname;
...
}
&
ODMG
Motivation
- Beispielanwendung
JDBC
- DriverManager
- Connection
- Statement
- ResultSet
Anwendung
ODMG
- Objektmodell /ODL
- OQL
- Java-Binding
Anwendung
Vergleich
AG Softwaretechnik
Fachbereich 17
Mathematik/Informatik
Object Query Language
JDBC
&
ODMG
Motivation
- Beispielanwendung
Unterstützt folgende 3 Anfrage-Arten:
Relationale Anfrage (SQL-Anfrage)
SELECT b.kennzeichen FROM Auto b;
JDBC
- DriverManager
- Connection
- Statement
- ResultSet
Objekterhaltene Anfrage
SELECT b FROM AUTO b WHERE b.farbe = „Rot“;
Anwendung
ODMG
- Objektmodell /ODL
- OQL
- Java-Binding
Anwendung
Vergleich
AG Softwaretechnik
Fachbereich 17
Mathematik/Informatik
Objekterzeugende Anfrage
SELECT Personenkraftfahrzeuge (farbe: b.farbe, kennz: b.kennzeichen) FROM Auto b;
Java-Binding
Java-ODL
JDBC
&
ODMG
Motivation
- Beispielanwendung
JDBC
- DriverManager
- Connection
- Statement
- ResultSet
Anwendung
• 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
ODMG
- Objektmodell /ODL
- OQL
- Java-Binding
Anwendung
Vergleich
AG Softwaretechnik
Fachbereich 17
Mathematik/Informatik
• Database
• Transaction
Beispielanwendung für POET
public class Student {
Private String vorname, nachname, studiengang;
Prviate int matrNr;
JDBC
&
ODMG
Motivation
- Beispielanwendung
JDBC
public Student (String vname, String nname, String stgang, int matNr.) {
vorname=vname ; nachname=nname ; studiengang=stgang ; matrNr = matNr ;
}
public String getNachname() { return nachname;}
…
}
- DriverManager
- Connection
- Statement
- ResultSet
Anwendung
ODMG
- Objektmodell /ODL
- OQL
- Java-Binding
Anwendung
Vergleich
/*
* Konfigurationsdatei:
* ptjavac.opt
*
* (impliziter) Aufruf durch den Precompiler-Aufruf:
* ptjavac -xc *.java
*/
[schemata\my_dict1]
oneFile = false
[databases\my_db]
oneFile = false
[classes\Student]
persistent = true
AG Softwaretechnik
Fachbereich 17
Mathematik/Informatik
; so heisst das Dictionary (=Schema)
; dieser Eintrag legt den Namen der DB fest
; Hier wird die persistenzfähige Klasse festgelegt
; diese Klasse ist persistent
Beispielanwendung für POET
import COM.POET.odmg.*;
JDBC
&
ODMG
public class Lookup
{
static void holeObjekt(Database db) throws ODMGException
{
Transaction txn = new Transaction();
txn.begin();
Motivation
- Beispielanwendung
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
}
JDBC
- DriverManager
- Connection
- Statement
- ResultSet
Anwendung
txn.commit(); // T war o.K.
ODMG
}
- Objektmodell /ODL
- OQL
- Java-Binding
public static void main(String[] args) throws ODMGException
{
Database db = Database.open("poet://LOCAL/my_base1",
Database.openReadWrite);
try {
holeObjekt(db);
}
finally { db.close(); }
}
Anwendung
Vergleich
}
AG Softwaretechnik
Fachbereich 17
Mathematik/Informatik
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
}
}
Vergleich
JDBC + SQL
ODMG
-
JDBC ist nur eine Schnittstelle
zwischen Java und den
relationalen Datenbanken
-
ODMG neu entwickeltes wesentlich
umfangreicheres Konzept. Besteht aus
objektorientierter DB (incl.
Objektmodell etc.) + Schnittstellen zu
mehreren Programmiersprachen,
unter anderem Java
-
Daten werden in Tabellen
gespeichert (SQL)
-
Daten werden als Objekte (mit ihren
Eigenschaften, gekapselt als Attribute, in
den Objekten) in einem / mehreren
Objektbäumen gespeichert
-
Art der Speicherung gut geeignet
um große Mengen gering
strukturierter Daten zu verwalten
-
Durch die Kapselung der Eigenschaften
in den Objekten sehr gut geeignet um
komplexe, stark strukturierte Daten zu
speichern
-
JDBC bietet lediglich eine
Kapselung von SQL-Anweisungen,
keine Abstraktion, Rückgriff auf
SQL
-
Anhand des Java-Binding werden
Elemente der Sprache Java direkt auf
Objekte der Datenbank abgebildet
- Objektmodell /ODL
- OQL
- Java-Binding
-
Impedance – Missmatch,
Tabelle  Objektorientierung
-
Kein Modellierungsbruch
Anwendung
-
Verfahren für CASE-SYSTEME
nicht geeignet, da keine
Modellierung von
Spezialisierung, Assoziation etc.
möglich
JDBC
&
ODMG
Motivation
- Beispielanwendung
JDBC
- DriverManager
- Connection
- Statement
- ResultSet
Anwendung
ODMG
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
AG Softwaretechnik
Fachbereich 17
Mathematik/Informatik
ENDE
Herunterladen