Autor: Mathias LotherStatus: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURGFAKULTÄT FÜR INFORMATIK
Seite 1Dienstag, 11. April 2023
Java und DatenbankenJava und Datenbanken
JDBC
Konzepte
Realisierung von Zugriffen
Autor: Mathias LotherStatus: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURGFAKULTÄT FÜR INFORMATIK
Seite 2Dienstag, 11. April 2023
Java und DatenbankenJava und Datenbanken- Gliederung -- Gliederung -
Einführung in JDBC JDBC-Architektur
2-Schichten-Modell vs. 3-Schichten-Modell JDBC und ODBC JDBC Treiber und -typen
Package SQL Manipulation von Tabellen JDBC-Erweiterungen Zusammenfassung
Autor: Mathias LotherStatus: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURGFAKULTÄT FÜR INFORMATIK
Seite 3Dienstag, 11. April 2023
Java und DatenbankenJava und Datenbanken- Einführung in JDBC -- Einführung in JDBC -
Java Database Connectivity Interface (JDBC) ist Handelsmarke der Firma Sun Microsystems ist vollständig in Java implementiert stellt API zur Verfügung, um SQL-Datenbankabfragen zu
realisieren fordert hierbei KEINE Voraussetzungen an die benutzte
Datenbank, d.h. Java-Applikationen können unabhängig von der verwendeten Datenbank erstellt werden
Anwendung JDBC-API
Informix
DB2
Sybase
Autor: Mathias LotherStatus: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURGFAKULTÄT FÜR INFORMATIK
Seite 4Dienstag, 11. April 2023
Java und DatenbankenJava und Datenbanken- Gliederung -- Gliederung -
Einführung in JDBC JDBC-Architektur
2-Schichten-Modell vs. 3-Schichten-Modell JDBC und ODBC JDBC Treiber und -typen
Package SQL Manipulation von Tabellen JDBC-Erweiterungen Zusammenfassung
Autor: Mathias LotherStatus: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURGFAKULTÄT FÜR INFORMATIK
Seite 5Dienstag, 11. April 2023
Java und DatenbankenJava und Datenbanken- JDBC-Architektur -- JDBC-Architektur -
Zwei-Schichten-Modell vs. Drei-Schichten-Modell
Java-AnwendungClient
JDBC-Treiber
DBMS-spezifischesProtokoll
DBMSDatenbank-Server
Java-Anwendung Client
Socket, RMI, CORBA, etc.
AnwendungsserverServermaschine
JDBC-Treiber
DBMS-spezifischesProtokoll
DBMS Datenbankserver
Zusätzliche Schicht als Komponentenadapter Treiber lokal bei Server Treiber muss NICHT netzwerkfähig sein Mittlere Schicht
ermöglicht Kontrolle von DB-Zugriffen stellt DB-Operationen für komfortable Nutzung im API zur Verfügung
Client-Server-Architektur Treiber wird über das Netz geladen Treiber muss netzwerkfähig sein Web- & DB-Server auf gleicher Maschine hohe Rechenleistung erforderlich
Autor: Mathias LotherStatus: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURGFAKULTÄT FÜR INFORMATIK
Seite 6Dienstag, 11. April 2023
JDBC und ODBC Open Database Connectivity (ODBC) ist ein weit verbreitetes und
akzeptiertes API zum Zugriff auf relationale DB (RDBMS) Erstellung von Anwendungen, die ODBC nutzen, ist an keine
Programmiersprache gebunden Funktionen des ODBC-API werden durch Treiber bereitgestellt Aufruf dieser Treiberfunktionen unabhängig von verwendeter DB
ODBC-API wurde von MS in C entwickelt, d.h.ODBC-API bietet selbst KEINE geeignete Schnittstelle zw. Java
und Datenbanken ABER: im JDBC-Paket ist eine ODBC-JDBC-Brücke (ein spezieller
Treiber) enthalten Sowohl JDBC als auch ODBC verwenden SQL
Java und DatenbankenJava und Datenbanken- JDBC-Architektur -- JDBC-Architektur -
Autor: Mathias LotherStatus: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURGFAKULTÄT FÜR INFORMATIK
Seite 7Dienstag, 11. April 2023
JDBC-Treiber die eigentliche Funktionalität der JDBC liegt im vorhandenen
JDBC-Treiber JDBC-Treiber wird über den JDBC-Treiber-Manager verwaltet Kernstück hierbei ist das Interface java.sql.Driver, das auch auf
java.sql.Connection (Verbindungsaufbau), java.sql.Statement (SQL-Anfrage) und java.sql.ResultSet (Ergebnisse) zugreift
es gibt 4 Treibertypen: Typ-1 und Typ-2 sind NICHT netzwerkfähig Typ-3 und Typ-4 verwenden Netzwerkprotokoll
Java und DatenbankenJava und Datenbanken- JDBC-Architektur -- JDBC-Architektur -
Autor: Mathias LotherStatus: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURGFAKULTÄT FÜR INFORMATIK
Seite 8Dienstag, 11. April 2023
JDBC-Treiber Typ-1 JDBC-ODBC-Bridge nativer ODBC-Treiber lokal beim
Client installiert lediglich lokale Datenquellen können
angesprochen werden
Java und DatenbankenJava und Datenbanken- JDBC-Architektur -- JDBC-Architektur -
Java- Anwendung
JDBC-Treiber-Manager
JDBC-ODBC-Bridge-Treiber
Native Interface (DLL)
ODBC-Treiber-Manager
ODBC-Treiber
Datenbankbibliothek
DBMS
Autor: Mathias LotherStatus: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURGFAKULTÄT FÜR INFORMATIK
Seite 9Dienstag, 11. April 2023
Java und DatenbankenJava und Datenbanken- JDBC-Architektur -- JDBC-Architektur -
Java- Anwendung
JDBC-Treiber-Manager
Native Java-Treiber
Native Interface (DLL)
Datenbankbibliothek
DBMS
JDBC-Treiber Typ-2 Native API Partly Java Driver Treiber muss lokal beim Client
installiert werden, was i.d.R. durch vorab geladene Treiber sichergestellt wird
der im Typ-1 in nativem Code implementierte ODBC-Treiber wird durch einen herstellerabhängigen Treiber (Informix, DB2) ersetzt
Autor: Mathias LotherStatus: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURGFAKULTÄT FÜR INFORMATIK
Seite 10Dienstag, 11. April 2023
Java und DatenbankenJava und Datenbanken- JDBC-Architektur -- JDBC-Architektur -
Java- Anwendung
JDBC-Treiber-Manager
Java-Treiber
Middleware
ODBC-Treiber-Manager
ODBC-Treiber
Datenbankbibliothek
DBMS
JDBC-Treiber Typ-3 JDBC Net Pure Java Driver Anfragen werden in DB-unabh.
Netzwerkprotokoll übersetzt keinerlei Installationen beim
Client notwendig universelle Treiber vom Server
ladbar tatsächliche Treiber wird auf
Server ausgeführt
Autor: Mathias LotherStatus: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURGFAKULTÄT FÜR INFORMATIK
Seite 11Dienstag, 11. April 2023
Java und DatenbankenJava und Datenbanken- JDBC-Architektur -- JDBC-Architektur -
Java- Anwendung
JDBC-Treiber-Manager
Java-Treiber
Datenbankbibliothek
DBMS
JDBC-Treiber Typ-4 Native Protokoll Pure Java Driver Verwendung nur von Java-Treibern Treibertyp muss vom DB-Hersteller
entwickelt werden (Kosten!) portabelste und effektivste Lösung Wahrung der Plattformunabhängigkeit
Autor: Mathias LotherStatus: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURGFAKULTÄT FÜR INFORMATIK
Seite 12Dienstag, 11. April 2023
Betrachtungen zu den JDBC-Treibern Treibertypen 3 und 4
sind eher zu empfehlen als Typen 1 und 2, da hierbei der Datenbankzugriff über das Internet möglich wird
sind jedoch nicht für alle Datenbanken erhältlich Treibertyp 1 ist am leichtesten zu realisieren, da Java die JDBC-
ODBC-Bridge direkt anbietet Verfügbarkeiten:
Java und DatenbankenJava und Datenbanken- JDBC-Architektur -- JDBC-Architektur -
Firma Treibertyp DBMSIBM 2, 3 IBM DB-2 Universal Version 5.2
IBM DB-2 Connect Version 5.2Imaginary 4 MSQL (Freeware)Intersolv 3 DB-2, Ingres, Informix, Oracle MS SQL-ServerKonasoft Inc. 3 Oracle, MS SQL-Server, Sybase
Autor: Mathias LotherStatus: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURGFAKULTÄT FÜR INFORMATIK
Seite 13Dienstag, 11. April 2023
Java und DatenbankenJava und Datenbanken- Gliederung -- Gliederung -
Einführung in JDBC JDBC-Architektur
2-Schichten-Modell vs. 3-Schichten-Modell JDBC und ODBC JDBC Treiber und -typen
Package SQL Manipulation von Tabellen JDBC-Erweiterungen Zusammenfassung
Autor: Mathias LotherStatus: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURGFAKULTÄT FÜR INFORMATIK
Seite 14Dienstag, 11. April 2023
Java und DatenbankenJava und Datenbanken- Package SQL -- Package SQL -
Package java.sql realisiert die eigentliche JDBC-Funktionalität in Java ist standardmäßig Teil der Java-Bibliothek 16 Interfaces:
Array, Blob, CallableStatement, Clob, Connection, DatabaseMetaData, Driver, PreparedStatement, Ref, ResultSet, ResultSetMetaData, SQLData, SQLInput, SQLOutput, Statement, Struct
6 allgemeine Klassen: Date, DriverManager, DriverPropertyInfo, Time, Timestamp, Types
4 Exceptions BatchUpdateException, DataTruncation, SQLException, SQLWarning
Autor: Mathias LotherStatus: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURGFAKULTÄT FÜR INFORMATIK
Seite 15Dienstag, 11. April 2023
Java und DatenbankenJava und Datenbanken- Package SQL -- Package SQL -
SQL und Java-Datentypen nicht alle in SQL definierten Datentypen werden von beliebigen
Datenbanksystemen unterstützt (tw. Unterschiede in Bezeichnung) JDBC stellt Datentypen zur Verfügung, um einen einheitlichen
Datenzugriff zu gewährleisten Methoden setxxx(), getxxx() und registerOutParameter()
ermöglichen Konvertierung von JDBC- zu Java-Datentypen Konvertierung & Abbildung, Beispiele:
BIG INT (SQL-Datentyp) getLong() (Java-Methode) float (Java-Datentyp) REAL (JDBC-Datentyp) CHAR (JDBC-Datentyp) String (Java-Datentyp)
Autor: Mathias LotherStatus: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURGFAKULTÄT FÜR INFORMATIK
Seite 16Dienstag, 11. April 2023
Java und DatenbankenJava und Datenbanken- Gliederung -- Gliederung -
Einführung in JDBC JDBC-Architektur
2-Schichten-Modell vs. 3-Schichten-Modell JDBC und ODBC JDBC Treiber und -typen
Package SQL Manipulation von Tabellen JDBC-Erweiterungen Zusammenfassung
Autor: Mathias LotherStatus: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURGFAKULTÄT FÜR INFORMATIK
Seite 17Dienstag, 11. April 2023
Java und DatenbankenJava und Datenbanken- Tabellenmanipulation -- Tabellenmanipulation -
JDBC-API Programmierer kann mit Hilfe des APIs Objekte und Methoden
definieren, um Datenbankzugriffe zu realisieren Zugriff auch als Stapeloperation (Batch) möglich
Art und Weise des DB-Zugriffs Laden eines geeigneten JDBC-Treibers Herstellung der Datenbankanbindung Erstellung eines Statementobjekts und Weitergabe der
auszuführenden Anweisungen über das Anweisungsobjekt an das darunter liegende DBMS
Rückgabe der Funktionen in Form von Ergebnisdatensätzen Schließen der Verbindung zur Datenbank
Autor: Mathias LotherStatus: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURGFAKULTÄT FÜR INFORMATIK
Seite 18Dienstag, 11. April 2023
Java und DatenbankenJava und Datenbanken- Tabellenmanipulation -- Tabellenmanipulation -
Laden eines JDBC-Treibers Code: class.forName(“meinTreiber“) Instanz des Treibers wird dynamisch erzeugt und automatisch beim
Treibermanager-Objekt registriert
Verbindung zu Datenbanken Code: Connectino mein_con = DriverManager.getConnection(db_url,
userID, passwd);
Generierung und Ausführung von Statements Statementobjekt wird benötigt Code: Statement mein_stmt = mein_con.createStatement(); Anfragen durch die Methoden executeQuery(), executeUpdate(),
executeBatch(), execute()
Code: Resultset mein_result = mein_stmt.executeQuery(“Select * FROM Spieler”)
Autor: Mathias LotherStatus: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURGFAKULTÄT FÜR INFORMATIK
Seite 19Dienstag, 11. April 2023
Java und DatenbankenJava und Datenbanken- Tabellenmanipulation -- Tabellenmanipulation -
Rückgabe von Ergebnissen Code:
SELECT Gespielt, Nachname FROM Spieler
String name = mein_result.getString(“Name”)
int anzahlSpiele = mein_result.getInt(“Gespielt”)
ResultSet.next
Schließen einer Verbindung Code: mein_con.close()
Autor: Mathias LotherStatus: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURGFAKULTÄT FÜR INFORMATIK
Seite 20Dienstag, 11. April 2023
Java und DatenbankenJava und Datenbanken- Gliederung -- Gliederung -
Einführung in JDBC JDBC-Architektur
2-Schichten-Modell vs. 3-Schichten-Modell JDBC und ODBC JDBC Treiber und -typen
Package SQL Manipulation von Tabellen JDBC-Erweiterungen Zusammenfassung
Autor: Mathias LotherStatus: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURGFAKULTÄT FÜR INFORMATIK
Seite 21Dienstag, 11. April 2023
Java und DatenbankenJava und Datenbanken- JDBC-Erweiterungen -- JDBC-Erweiterungen -
Java Naming and Directory Interface (JNDI) explizite Angabe eines Treibers und einer URL zur Anbindung an
DBMS schafft Abhängigkeiten, diese sollten vermieden werden JNDI legt logische Namen für DBs und Treiber fest Anwendung erhält ein DataSource-Ojekt mit Hilfe von JNDI können DataSource-Objekte ausgetauscht
werden, ohne dass der Code verändert werden muss
Autor: Mathias LotherStatus: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURGFAKULTÄT FÜR INFORMATIK
Seite 22Dienstag, 11. April 2023
Java und DatenbankenJava und Datenbanken- JDBC-Erweiterungen -- JDBC-Erweiterungen -
Connection Pooling (Verbindungszusammenschluss) ist Teil von javax.sql Verwaltung der physikalischen Verbindungen zum DBMS im Cache Bei Anforderung einer Verbindung zum DBMS durch Java wird im
Cache nach einem PooledConnection-Objekt gesucht, ist keins vorhanden, wird dieses erzeugt
Erzeugung des Objektes ist für Java transparent JNDI übergibt JDBC-Implementation (mit Connection Pooling)
Autor: Mathias LotherStatus: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURGFAKULTÄT FÜR INFORMATIK
Seite 23Dienstag, 11. April 2023
Java und DatenbankenJava und Datenbanken- JDBC-Erweiterungen -- JDBC-Erweiterungen -
Distributed Transaction Support (Unterstützung verteilter Transaktionen) Transaktion = Bündelung von mehreren Datenbank-Operationen JDBC kann so das standardmäßige Two-Phase-Commit- Protokoll
nutzen Vereinfachung
des Einsatzes von JDBC im Zusammenhang mit Enterprise-JavaBeans des Transaktions--Managements in verteilten Systemen
Autor: Mathias LotherStatus: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURGFAKULTÄT FÜR INFORMATIK
Seite 24Dienstag, 11. April 2023
Java und DatenbankenJava und Datenbanken- Gliederung -- Gliederung -
Einführung in JDBC JDBC-Architektur
2-Schichten-Modell vs. 3-Schichten-Modell JDBC und ODBC JDBC Treiber und -typen
Package SQL Manipulation von Tabellen JDBC-Erweiterungen Zusammenfassung
Autor: Mathias LotherStatus: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURGFAKULTÄT FÜR INFORMATIK
Seite 25Dienstag, 11. April 2023
Java und DatenbankenJava und Datenbanken- Zusammenfassung -- Zusammenfassung -
JDBC ist standardisiertes Interface, das auch direkt SQL-Anweisungen ausführen kann
Vorteile von JDBC Plattformunabhängigkeit Einfache Portierbarkeit Einfache Programmierbarkeit Erweiterbarkeit
Nachteile von JDBC schlechte Leistung der Datenbankzugriffe