Java und Datenbanken - Otto-von-Guericke

Werbung
Java und Datenbanken
JDBC
Konzepte
Realisierung von Zugriffen
Autor: Mathias Lother
Status: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 1
Montag, 16. Mai 2016
Java und Datenbanken
- Gliederung 
Einführung in JDBC

JDBC-Architektur







Autor: Mathias Lother
Status: Entwurf
2-Schichten-Modell vs. 3-Schichten-Modell
JDBC und ODBC
JDBC Treiber und -typen
Package SQL
Manipulation von Tabellen
JDBC-Erweiterungen
Zusammenfassung
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 2
Montag, 16. Mai 2016
Java und Datenbanken
- 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
Informix
Anwendung
DB2
JDBC-API
Sybase
Autor: Mathias Lother
Status: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 3
Montag, 16. Mai 2016
Java und Datenbanken
- Gliederung 

Einführung in JDBC
JDBC-Architektur







Autor: Mathias Lother
Status: Entwurf
2-Schichten-Modell vs. 3-Schichten-Modell
JDBC und ODBC
JDBC Treiber und -typen
Package SQL
Manipulation von Tabellen
JDBC-Erweiterungen
Zusammenfassung
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 4
Montag, 16. Mai 2016
Java und Datenbanken
- JDBC-Architektur 
Zwei-Schichten-Modell
vs.
Drei-Schichten-Modell
Java-Anwendung
Java-Anwendung
Socket, RMI, CORBA, etc.
Client
JDBC-Treiber
Anwendungsserver
Servermaschine
DBMS-spezifisches
Protokoll
JDBC-Treiber
DBMS-spezifisches
Protokoll
DBMS
Datenbank-Server
DBMS





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 Lother
Status: Entwurf
Client




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
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 5
Montag, 16. Mai 2016
Java und Datenbanken
- JDBC-Architektur 
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,






Autor: Mathias Lother
Status: Entwurf
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
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 6
Montag, 16. Mai 2016
Java und Datenbanken
- JDBC-Architektur 
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:


Autor: Mathias Lother
Status: Entwurf
Typ-1 und Typ-2 sind NICHT netzwerkfähig
Typ-3 und Typ-4 verwenden Netzwerkprotokoll
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 7
Montag, 16. Mai 2016
Java und Datenbanken
- JDBC-Architektur Java- Anwendung

JDBC-Treiber Typ-1



JDBC-ODBC-Bridge
nativer ODBC-Treiber lokal beim
Client installiert
lediglich lokale Datenquellen können
angesprochen werden
JDBC-Treiber-Manager
JDBC-ODBC-Bridge-Treiber
Native Interface (DLL)
ODBC-Treiber-Manager
ODBC-Treiber
Datenbankbibliothek
DBMS
Autor: Mathias Lother
Status: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 8
Montag, 16. Mai 2016
Java und Datenbanken
- JDBC-Architektur 
Java- Anwendung
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
JDBC-Treiber-Manager
Native Java-Treiber
Native Interface (DLL)
Datenbankbibliothek
DBMS
Autor: Mathias Lother
Status: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 9
Montag, 16. Mai 2016
Java und Datenbanken
- JDBC-Architektur Java- Anwendung

JDBC-Treiber-Manager
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
Java-Treiber
Middleware
ODBC-Treiber-Manager
ODBC-Treiber
Datenbankbibliothek
DBMS
Autor: Mathias Lother
Status: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 10
Montag, 16. Mai 2016
Java und Datenbanken
- JDBC-Architektur 
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
Java- Anwendung
JDBC-Treiber-Manager
Java-Treiber
Datenbankbibliothek
DBMS
Autor: Mathias Lother
Status: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 11
Montag, 16. Mai 2016
Java und Datenbanken
- JDBC-Architektur 
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 JDBCODBC-Bridge direkt anbietet
Verfügbarkeiten:
Firma
IBM
Imaginary
Intersolv
Konasoft Inc.
Autor: Mathias Lother
Status: Entwurf
Treibertyp DBMS
2, 3
IBM DB-2 Universal Version 5.2
IBM DB-2 Connect Version 5.2
4
MSQL (Freeware)
3
DB-2, Ingres, Informix, Oracle MS SQL-Server
3
Oracle, MS SQL-Server, Sybase
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 12
Montag, 16. Mai 2016
Java und Datenbanken
- Gliederung 

Einführung in JDBC
JDBC-Architektur







Autor: Mathias Lother
Status: Entwurf
2-Schichten-Modell vs. 3-Schichten-Modell
JDBC und ODBC
JDBC Treiber und -typen
Package SQL
Manipulation von Tabellen
JDBC-Erweiterungen
Zusammenfassung
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 13
Montag, 16. Mai 2016
Java und Datenbanken
- Package SQL 
Package java.sql



realisiert die eigentliche JDBC-Funktionalität in Java
ist standardmäßig Teil der Java-Bibliothek
16 Interfaces:


6 allgemeine Klassen:


Array, Blob, CallableStatement, Clob, Connection, DatabaseMetaData,
Driver, PreparedStatement, Ref, ResultSet, ResultSetMetaData,
SQLData, SQLInput, SQLOutput, Statement, Struct
Date, DriverManager, DriverPropertyInfo, Time, Timestamp, Types
4 Exceptions

Autor: Mathias Lother
Status: Entwurf
BatchUpdateException, DataTruncation, SQLException, SQLWarning
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 14
Montag, 16. Mai 2016
Java und Datenbanken
- 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:
Autor: Mathias Lother
Status: Entwurf

BIG INT (SQL-Datentyp) 

float (Java-Datentyp)

CHAR (JDBC-Datentyp)


getLong() (Java-Methode)
REAL (JDBC-Datentyp)
String (Java-Datentyp)
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 15
Montag, 16. Mai 2016
Java und Datenbanken
- Gliederung 

Einführung in JDBC
JDBC-Architektur







Autor: Mathias Lother
Status: Entwurf
2-Schichten-Modell vs. 3-Schichten-Modell
JDBC und ODBC
JDBC Treiber und -typen
Package SQL
Manipulation von Tabellen
JDBC-Erweiterungen
Zusammenfassung
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 16
Montag, 16. Mai 2016
Java und Datenbanken
- 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





Autor: Mathias Lother
Status: Entwurf
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
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 17
Montag, 16. Mai 2016
Java und Datenbanken
- Tabellenmanipulation 
Laden eines JDBC-Treibers



Verbindung zu Datenbanken


Code: class.forName(“meinTreiber“)
Instanz des Treibers wird dynamisch erzeugt und automatisch beim
Treibermanager-Objekt registriert
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()

Autor: Mathias Lother
Status: Entwurf
Code:
Resultset mein_result =
mein_stmt.executeQuery(“Select * FROM Spieler”)
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 18
Montag, 16. Mai 2016
Java und Datenbanken
- 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 Lother
Status: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 19
Montag, 16. Mai 2016
Java und Datenbanken
- Gliederung 

Einführung in JDBC
JDBC-Architektur







Autor: Mathias Lother
Status: Entwurf
2-Schichten-Modell vs. 3-Schichten-Modell
JDBC und ODBC
JDBC Treiber und -typen
Package SQL
Manipulation von Tabellen
JDBC-Erweiterungen
Zusammenfassung
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 20
Montag, 16. Mai 2016
Java und Datenbanken
- 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 Lother
Status: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 21
Montag, 16. Mai 2016
Java und Datenbanken
- 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 Lother
Status: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 22
Montag, 16. Mai 2016
Java und Datenbanken
- 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


Autor: Mathias Lother
Status: Entwurf
des Einsatzes von JDBC im Zusammenhang mit Enterprise-JavaBeans
des Transaktions--Managements in verteilten Systemen
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 23
Montag, 16. Mai 2016
Java und Datenbanken
- Gliederung 

Einführung in JDBC
JDBC-Architektur







Autor: Mathias Lother
Status: Entwurf
2-Schichten-Modell vs. 3-Schichten-Modell
JDBC und ODBC
JDBC Treiber und -typen
Package SQL
Manipulation von Tabellen
JDBC-Erweiterungen
Zusammenfassung
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 24
Montag, 16. Mai 2016
Java und Datenbanken
- Zusammenfassung 

JDBC ist standardisiertes Interface, das auch direkt SQLAnweisungen ausführen kann
Vorteile von JDBC





Plattformunabhängigkeit
Einfache Portierbarkeit
Einfache Programmierbarkeit
Erweiterbarkeit
Nachteile von JDBC

schlechte Leistung der Datenbankzugriffe
Autor: Mathias Lother
Status: Entwurf
OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG
FAKULTÄT FÜR INFORMATIK
Seite 25
Montag, 16. Mai 2016
Herunterladen