260 likes | 547 Views
Java und Datenbanken. JDBC Konzepte Realisierung von Zugriffen. Java und Datenbanken - 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
E N D
Java und Datenbanken JDBC Konzepte Realisierung von Zugriffen
Java und Datenbanken- 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
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 DB2 Sybase Anwendung JDBC-API
Java und Datenbanken- 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
Java und Datenbanken- JDBC-Architektur - • Zwei-Schichten-Modell vs. Drei-Schichten-Modell Java-Anwendung Client Socket, RMI, CORBA, etc. Anwendungsserver Servermaschine JDBC-Treiber DBMS-spezifisches Protokoll DBMS Datenbankserver Java-Anwendung Client JDBC-Treiber DBMS-spezifisches Protokoll DBMS Datenbank-Server • Client-Server-Architektur • Treiber wird über das Netz geladen • Treiber muss netzwerkfähig sein • Web- & DB-Server auf gleicher Maschine • hohe Rechenleistung erforderlich • 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
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, • 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 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: • Typ-1 und Typ-2 sind NICHT netzwerkfähig • Typ-3 und Typ-4 verwenden Netzwerkprotokoll
Java und Datenbanken- JDBC-Architektur - • JDBC-Treiber Typ-1 • JDBC-ODBC-Bridge • nativer ODBC-Treiber lokal beim Client installiert • lediglich lokale Datenquellen können angesprochen werden Java- Anwendung JDBC-Treiber-Manager JDBC-ODBC-Bridge-Treiber Native Interface (DLL) ODBC-Treiber-Manager ODBC-Treiber Datenbankbibliothek DBMS
Java und Datenbanken- JDBC-Architektur - • 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 Java- Anwendung JDBC-Treiber-Manager Native Java-Treiber Native Interface (DLL) Datenbankbibliothek DBMS
Java und Datenbanken- JDBC-Architektur - • 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- Anwendung JDBC-Treiber-Manager Java-Treiber Middleware ODBC-Treiber-Manager ODBC-Treiber Datenbankbibliothek DBMS
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
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 JDBC-ODBC-Bridge direkt anbietet • Verfügbarkeiten:
Java und Datenbanken- 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
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: • 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
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: • BIG INT (SQL-Datentyp) getLong() (Java-Methode) • float (Java-Datentyp) REAL (JDBC-Datentyp) • CHAR (JDBC-Datentyp) String (Java-Datentyp)
Java und Datenbanken- 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
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 • 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
Java und Datenbanken- 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: Statementmein_stmt = mein_con.createStatement(); • Anfragen durch die Methoden executeQuery(), executeUpdate(), executeBatch(), execute() • Code:Resultset mein_result = mein_stmt.executeQuery(“Select * FROM Spieler”)
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()
Java und Datenbanken- 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
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
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)
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 • des Einsatzes von JDBC im Zusammenhang mit Enterprise-JavaBeans • des Transaktions--Managements in verteilten Systemen
Java und Datenbanken- 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
Java und Datenbanken- 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