JDBC & ODMG Motivation - Beispielanwendung JDBC - DriverManager

19
AG Softw aretechnik Fachbereich 17 M athematik/Inform atik JDBC & ODMG Motivation - Beispielanwendu ng JDBC - DriverManager - Connection - Statement - ResultSet Anwendung ODMG - Objektmodell /ODL - OQL - Java-Binding Anwendung Vergleich JDBC & ODMG Entw icklung einesverteilten m ultim edia System sm itH ilfe von D esign Pattern

description

JDBC & ODMG Motivation - Beispielanwendung JDBC - DriverManager - Connection - Statement - ResultSet Anwendung ODMG - Objektmodell /ODL - OQL - Java-Binding Anwendung Vergleich. JDBC & ODMG. Motivation - PowerPoint PPT Presentation

Transcript of JDBC & ODMG Motivation - Beispielanwendung JDBC - DriverManager

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