Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Autor: Mathias Lother Status: Entwurf OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG FAKULTÄT FÜR INFORMATIK Seite 1 Samstag, 18. Januar 2014 Java und Datenbanken.

Ähnliche Präsentationen


Präsentation zum Thema: "Autor: Mathias Lother Status: Entwurf OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG FAKULTÄT FÜR INFORMATIK Seite 1 Samstag, 18. Januar 2014 Java und Datenbanken."—  Präsentation transkript:

1 Autor: Mathias Lother Status: Entwurf OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG FAKULTÄT FÜR INFORMATIK Seite 1 Samstag, 18. Januar 2014 Java und Datenbanken JDBC Konzepte Realisierung von Zugriffen

2 Autor: Mathias Lother Status: Entwurf OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG FAKULTÄT FÜR INFORMATIK Seite 2 Samstag, 18. Januar 2014 Java und Datenbanken - Gliederung - l Einführung in JDBC l JDBC-Architektur u 2-Schichten-Modell vs. 3-Schichten-Modell u JDBC und ODBC u JDBC Treiber und -typen l Package SQL l Manipulation von Tabellen l JDBC-Erweiterungen l Zusammenfassung

3 Autor: Mathias Lother Status: Entwurf OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG FAKULTÄT FÜR INFORMATIK Seite 3 Samstag, 18. Januar 2014 Java und Datenbanken - Einführung in JDBC - l Java Database Connectivity Interface (JDBC) u ist Handelsmarke der Firma Sun Microsystems u ist vollständig in Java implementiert u stellt API zur Verfügung, um SQL-Datenbankabfragen zu realisieren u fordert hierbei KEINE Voraussetzungen an die benutzte Datenbank, d.h. Java-Applikationen können unabhängig von der verwendeten Datenbank erstellt werden AnwendungJDBC-API Informix DB2 Sybase

4 Autor: Mathias Lother Status: Entwurf OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG FAKULTÄT FÜR INFORMATIK Seite 4 Samstag, 18. Januar 2014 Java und Datenbanken - Gliederung - l Einführung in JDBC l JDBC-Architektur u 2-Schichten-Modell vs. 3-Schichten-Modell u JDBC und ODBC u JDBC Treiber und -typen l Package SQL l Manipulation von Tabellen l JDBC-Erweiterungen l Zusammenfassung

5 Autor: Mathias Lother Status: Entwurf OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG FAKULTÄT FÜR INFORMATIK Seite 5 Samstag, 18. Januar 2014 Java und Datenbanken - JDBC-Architektur - l Zwei-Schichten-Modell vs. Drei-Schichten-Modell Java-Anwendung Client JDBC-Treiber DBMS-spezifisches Protokoll DBMS Datenbank-Server Java-AnwendungClient Socket, RMI, CORBA, etc. Anwendungsserver Servermaschine JDBC-Treiber DBMS-spezifisches Protokoll DBMSDatenbankserver u Zusätzliche Schicht als Komponentenadapter u Treiber lokal bei Server u Treiber muss NICHT netzwerkfähig sein u Mittlere Schicht ç ermöglicht Kontrolle von DB-Zugriffen ç stellt DB-Operationen für komfortable Nutzung im API zur Verfügung u Client-Server-Architektur u Treiber wird über das Netz geladen u Treiber muss netzwerkfähig sein u Web- & DB-Server auf gleicher Maschine u hohe Rechenleistung erforderlich

6 Autor: Mathias Lother Status: Entwurf OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG FAKULTÄT FÜR INFORMATIK Seite 6 Samstag, 18. Januar 2014 l JDBC und ODBC u Open Database Connectivity (ODBC) ist ein weit verbreitetes und akzeptiertes API zum Zugriff auf relationale DB (RDBMS) u Erstellung von Anwendungen, die ODBC nutzen, ist an keine Programmiersprache gebunden u Funktionen des ODBC-API werden durch Treiber bereitgestellt u Aufruf dieser Treiberfunktionen unabhängig von verwendeter DB u 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 u Sowohl JDBC als auch ODBC verwenden SQL Java und Datenbanken - JDBC-Architektur -

7 Autor: Mathias Lother Status: Entwurf OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG FAKULTÄT FÜR INFORMATIK Seite 7 Samstag, 18. Januar 2014 l JDBC-Treiber u die eigentliche Funktionalität der JDBC liegt im vorhandenen JDBC-Treiber u 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 u es gibt 4 Treibertypen: ç Typ-1 und Typ-2 sind NICHT netzwerkfähig ç Typ-3 und Typ-4 verwenden Netzwerkprotokoll Java und Datenbanken - JDBC-Architektur -

8 Autor: Mathias Lother Status: Entwurf OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG FAKULTÄT FÜR INFORMATIK Seite 8 Samstag, 18. Januar 2014 l JDBC-Treiber Typ-1 u JDBC-ODBC-Bridge u nativer ODBC-Treiber lokal beim Client installiert u lediglich lokale Datenquellen können angesprochen werden Java und Datenbanken - JDBC-Architektur - Java- Anwendung JDBC-Treiber-Manager JDBC-ODBC-Bridge-Treiber Native Interface (DLL) ODBC-Treiber-Manager ODBC-Treiber Datenbankbibliothek DBMS

9 Autor: Mathias Lother Status: Entwurf OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG FAKULTÄT FÜR INFORMATIK Seite 9 Samstag, 18. Januar 2014 Java und Datenbanken - JDBC-Architektur - Java- Anwendung JDBC-Treiber-Manager Native Java-Treiber Native Interface (DLL) Datenbankbibliothek DBMS l JDBC-Treiber Typ-2 u Native API Partly Java Driver u Treiber muss lokal beim Client installiert werden, was i.d.R. durch vorab geladene Treiber sichergestellt wird u der im Typ-1 in nativem Code implementierte ODBC-Treiber wird durch einen herstellerabhängigen Treiber (Informix, DB2) ersetzt

10 Autor: Mathias Lother Status: Entwurf OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG FAKULTÄT FÜR INFORMATIK Seite 10 Samstag, 18. Januar 2014 Java und Datenbanken - JDBC-Architektur - Java- Anwendung JDBC-Treiber-Manager Java-Treiber Middleware ODBC-Treiber-Manager ODBC-Treiber Datenbankbibliothek DBMS l JDBC-Treiber Typ-3 u JDBC Net Pure Java Driver u Anfragen werden in DB-unabh. Netzwerkprotokoll übersetzt u keinerlei Installationen beim Client notwendig ç universelle Treiber vom Server ladbar ç tatsächliche Treiber wird auf Server ausgeführt

11 Autor: Mathias Lother Status: Entwurf OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG FAKULTÄT FÜR INFORMATIK Seite 11 Samstag, 18. Januar 2014 Java und Datenbanken - JDBC-Architektur - Java- Anwendung JDBC-Treiber-Manager Java-Treiber Datenbankbibliothek DBMS l JDBC-Treiber Typ-4 u Native Protokoll Pure Java Driver u Verwendung nur von Java-Treibern u Treibertyp muss vom DB-Hersteller entwickelt werden (Kosten!) u portabelste und effektivste Lösung u Wahrung der Plattformunabhängigkeit

12 Autor: Mathias Lother Status: Entwurf OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG FAKULTÄT FÜR INFORMATIK Seite 12 Samstag, 18. Januar 2014 l Betrachtungen zu den JDBC-Treibern u 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 u Treibertyp 1 ist am leichtesten zu realisieren, da Java die JDBC- ODBC-Bridge direkt anbietet u Verfügbarkeiten: Java und Datenbanken - JDBC-Architektur -

13 Autor: Mathias Lother Status: Entwurf OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG FAKULTÄT FÜR INFORMATIK Seite 13 Samstag, 18. Januar 2014 Java und Datenbanken - Gliederung - l Einführung in JDBC l JDBC-Architektur u 2-Schichten-Modell vs. 3-Schichten-Modell u JDBC und ODBC u JDBC Treiber und -typen l Package SQL l Manipulation von Tabellen l JDBC-Erweiterungen l Zusammenfassung

14 Autor: Mathias Lother Status: Entwurf OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG FAKULTÄT FÜR INFORMATIK Seite 14 Samstag, 18. Januar 2014 Java und Datenbanken - Package SQL - Package java.sql u realisiert die eigentliche JDBC-Funktionalität in Java u ist standardmäßig Teil der Java-Bibliothek u 16 Interfaces: ç Array, Blob, CallableStatement, Clob, Connection, DatabaseMetaData, Driver, PreparedStatement, Ref, ResultSet, ResultSetMetaData, SQLData, SQLInput, SQLOutput, Statement, Struct u 6 allgemeine Klassen: ç Date, DriverManager, DriverPropertyInfo, Time, Timestamp, Types u 4 Exceptions ç BatchUpdateException, DataTruncation, SQLException, SQLWarning

15 Autor: Mathias Lother Status: Entwurf OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG FAKULTÄT FÜR INFORMATIK Seite 15 Samstag, 18. Januar 2014 Java und Datenbanken - Package SQL - l SQL und Java-Datentypen u nicht alle in SQL definierten Datentypen werden von beliebigen Datenbanksystemen unterstützt (tw. Unterschiede in Bezeichnung) u 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 u Konvertierung & Abbildung, Beispiele: BIG INT (SQL-Datentyp) getLong() (Java-Methode) float (Java-Datentyp) REAL (JDBC-Datentyp) CHAR (JDBC-Datentyp) String (Java-Datentyp)

16 Autor: Mathias Lother Status: Entwurf OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG FAKULTÄT FÜR INFORMATIK Seite 16 Samstag, 18. Januar 2014 Java und Datenbanken - Gliederung - l Einführung in JDBC l JDBC-Architektur u 2-Schichten-Modell vs. 3-Schichten-Modell u JDBC und ODBC u JDBC Treiber und -typen l Package SQL l Manipulation von Tabellen l JDBC-Erweiterungen l Zusammenfassung

17 Autor: Mathias Lother Status: Entwurf OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG FAKULTÄT FÜR INFORMATIK Seite 17 Samstag, 18. Januar 2014 Java und Datenbanken - Tabellenmanipulation - l JDBC-API u Programmierer kann mit Hilfe des APIs Objekte und Methoden definieren, um Datenbankzugriffe zu realisieren u Zugriff auch als Stapeloperation (Batch) möglich l Art und Weise des DB-Zugriffs u Laden eines geeigneten JDBC-Treibers u Herstellung der Datenbankanbindung u Erstellung eines Statementobjekts und Weitergabe der auszuführenden Anweisungen über das Anweisungsobjekt an das darunter liegende DBMS u Rückgabe der Funktionen in Form von Ergebnisdatensätzen u Schließen der Verbindung zur Datenbank

18 Autor: Mathias Lother Status: Entwurf OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG FAKULTÄT FÜR INFORMATIK Seite 18 Samstag, 18. Januar 2014 Java und Datenbanken - Tabellenmanipulation - l Laden eines JDBC-Treibers Code: class.forName(meinTreiber) u Instanz des Treibers wird dynamisch erzeugt und automatisch beim Treibermanager-Objekt registriert l Verbindung zu Datenbanken Code: Connectino mein_con = DriverManager.getConnection(db_url, userID, passwd); l Generierung und Ausführung von Statements u 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)

19 Autor: Mathias Lother Status: Entwurf OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG FAKULTÄT FÜR INFORMATIK Seite 19 Samstag, 18. Januar 2014 Java und Datenbanken - Tabellenmanipulation - l Rückgabe von Ergebnissen u Code: SELECT Gespielt, Nachname FROM Spieler String name = mein_result.getString(Name) int anzahlSpiele = mein_result.getInt(Gespielt) ResultSet.next l Schließen einer Verbindung Code: mein_con.close()

20 Autor: Mathias Lother Status: Entwurf OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG FAKULTÄT FÜR INFORMATIK Seite 20 Samstag, 18. Januar 2014 Java und Datenbanken - Gliederung - l Einführung in JDBC l JDBC-Architektur u 2-Schichten-Modell vs. 3-Schichten-Modell u JDBC und ODBC u JDBC Treiber und -typen l Package SQL l Manipulation von Tabellen l JDBC-Erweiterungen l Zusammenfassung

21 Autor: Mathias Lother Status: Entwurf OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG FAKULTÄT FÜR INFORMATIK Seite 21 Samstag, 18. Januar 2014 Java und Datenbanken - JDBC-Erweiterungen - l Java Naming and Directory Interface (JNDI) u explizite Angabe eines Treibers und einer URL zur Anbindung an DBMS schafft Abhängigkeiten, diese sollten vermieden werden u JNDI legt logische Namen für DBs und Treiber fest u Anwendung erhält ein DataSource-Ojekt u mit Hilfe von JNDI können DataSource-Objekte ausgetauscht werden, ohne dass der Code verändert werden muss

22 Autor: Mathias Lother Status: Entwurf OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG FAKULTÄT FÜR INFORMATIK Seite 22 Samstag, 18. Januar 2014 Java und Datenbanken - JDBC-Erweiterungen - l Connection Pooling (Verbindungszusammenschluss) u ist Teil von javax.sql u Verwaltung der physikalischen Verbindungen zum DBMS im Cache u Bei Anforderung einer Verbindung zum DBMS durch Java wird im Cache nach einem PooledConnection-Objekt gesucht, ist keins vorhanden, wird dieses erzeugt u Erzeugung des Objektes ist für Java transparent u JNDI übergibt JDBC-Implementation (mit Connection Pooling)

23 Autor: Mathias Lother Status: Entwurf OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG FAKULTÄT FÜR INFORMATIK Seite 23 Samstag, 18. Januar 2014 Java und Datenbanken - JDBC-Erweiterungen - l Distributed Transaction Support (Unterstützung verteilter Transaktionen) u Transaktion = Bündelung von mehreren Datenbank-Operationen u JDBC kann so das standardmäßige Two-Phase-Commit- Protokoll nutzen u Vereinfachung ç des Einsatzes von JDBC im Zusammenhang mit Enterprise-JavaBeans ç des Transaktions--Managements in verteilten Systemen

24 Autor: Mathias Lother Status: Entwurf OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG FAKULTÄT FÜR INFORMATIK Seite 24 Samstag, 18. Januar 2014 Java und Datenbanken - Gliederung - l Einführung in JDBC l JDBC-Architektur u 2-Schichten-Modell vs. 3-Schichten-Modell u JDBC und ODBC u JDBC Treiber und -typen l Package SQL l Manipulation von Tabellen l JDBC-Erweiterungen l Zusammenfassung

25 Autor: Mathias Lother Status: Entwurf OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG FAKULTÄT FÜR INFORMATIK Seite 25 Samstag, 18. Januar 2014 Java und Datenbanken - Zusammenfassung - l JDBC ist standardisiertes Interface, das auch direkt SQL- Anweisungen ausführen kann l Vorteile von JDBC u Plattformunabhängigkeit u Einfache Portierbarkeit u Einfache Programmierbarkeit u Erweiterbarkeit l Nachteile von JDBC u schlechte Leistung der Datenbankzugriffe


Herunterladen ppt "Autor: Mathias Lother Status: Entwurf OTTO-VON-GUERICKE-UNIVERSITÄT MAGDEBURG FAKULTÄT FÜR INFORMATIK Seite 1 Samstag, 18. Januar 2014 Java und Datenbanken."

Ähnliche Präsentationen


Google-Anzeigen