© 2005, Rudolf Jansen JDBC Rudolf Jansen Freiberuflicher Entwickler und Autor DOAG - SIG Development.

Slides:



Advertisements
Ähnliche Präsentationen
Object Relational Mapping
Advertisements

Objektrelationales Mapping mit JPA
Objektrelationales Mapping mit JPA Advanced Topics Jonas Bandi Simon Martinelli.
1 Kapitel 9: Datenbankapplikationen. 2 Datenbankapplikationen MS Access Embedded SQL JDBC Application JDBC Applet Java Servlet Java Server Pages Cold.
Datenbank-Zugriffsschnittstellen. © Prof. T. Kudraß, HTWK Leipzig Überblick Datenbankzugriff mit PHP Datenbankzugriff mit JDBC Datenbankzugriff mit PSP.
JPQL Java Persistence Query Language
2. DB-API: Programmierschnittstellen zu Datenbanken
MySQL.
1 Spezielle Packages des Java SDK (1.4) java.nio.
Objektrelationales Mapping mit JPA Getting Started Jonas Bandi Simon Martinelli.
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
FH-Hof SQLJ Richard Göbel. FH-Hof SQLJ - Idee Erweiterung von Java um SQL Die Verwendung von SQL-Anweisungen innerhalb einer Programmiersprache wird vereinfacht.
Java: Grundlagen der Sprache
XINDICE The Apache XML Project Name: Jacqueline Langhorst
IS: Datenbanken, © Till Hänisch 2000 CREATE TABLE Syntax: CREATE TABLE name ( coldef [, coldef] [, tableconstraints] ) coldef := name type [länge], [[NOT]NULL],
Oracle PL/SQL Server Pages (PSP). © Prof. T. Kudraß, HTWK Leipzig Grundidee: PSP – Internet-Seiten mit dynamischer Präsentation von Inhalten durch Einsatz.
Datenbankanwendungen mit Java und JDBC
Open Database Connectivity (ODBC). © Prof. T. Kudraß, HTWK Leipzig Open Database Connectivity (ODBC) Idee: – API für eine DBMS, das ein Call-Level-Interface.
Entwicklung von XML-Anwendungen mit ORACLE XSU Oberseminar Datenbanken Andreas Rebs, 01INM.
Datenbank-Zugriffsschnittstellen am Beispiel von Oracle und PL/SQL.
SQL/XML. © Prof. T. Kudraß, HTWK Leipzig 2 2 Motivation Speicherung von XML in allen großen kommerziellen DBMS vorhanden proprietäre Lösungen für die.
Speicherung von XML- Dokumenten als Large Objects.
Publikation von XML-Daten mit XSQL Pages. © Prof. T. Kudraß, HTWK Leipzig Vorteile von XSQL Pages einfache Generierung von XML-Dokumenten auf der Basis.
JDBC Konzepte Realisierung von Zugriffen
Transaction Script Software Component Technology for Distributed Applications.
JDBC -Java Database Connectivity-. 15./22. April 2004JDBC2 JDBC.... verbindet Java-Programme mit SQL-basierten Datenbanken.. liefert eine generische SQL-API.
JDBC EDV JDBC.
Java in 9 Folien Besser: Online-Buch Go to Java 2.
Einführung MySQL mit PHP
Prof. K. Gremminger Folie 1 Vorlesung Datenbanksysteme SS 2002 Cursor-Konzept u Zugriff auf Mengen von Ergebnistupeln u In SQLJ Iteratoren u Vergleichbar.
Prof. K. Gremminger Folie 1 Vorlesung Datenbanksysteme SS 2002 Aufbau einer Verbindung zur Datenbank import java.net.URL; import java.sql.*; class JDBCExample.
J2EE Conformance von JDBC Middleware und EJB Applikation Server Detlef KünzelSystemberater +49 (0)
JDBC: JAVA Database Connectivity
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Datenmodelle, Datenbanksprachen und Datenbankmanagementsysteme
ODBC (Open Database Connectivity)
Architektur und Funktionalitäten der Oracle XML DB - ein Überblick mit ausgewählten praktischen Beispielen - im Rahmen des 17. Workshop Grundlagen von.
Best Practices in der Datenbank-programmierung
Getting Started Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
1 Softwareentwicklung mit.NET Teil 5 Datenzugriff mit ADO.NET Dr. Ralph Zeller.
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #7 SQL (Teil 4)
HORIZONT 1 XINFO ® Das IT - Informationssystem Eclipse Plugin HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
JDBC (Java DataBase Connectivity)
Esprit Database Suite Eine leistungsfähige Java-Persistzenzschicht zur einfachen Programmierung von Datenbankapplikation.
PL/SQL - Kurze Einführung April 2003Übung Data Warehousing: PL/SQL 2 PL/SQL.. ist eine Oracle-eigene, prozedurale Programmiersprache Sämtliche.
SQLite und XML in PHP 5.
Hibernate (OR-Mapping)
Datenbankanbindung mit
Embedded SQL in Java Michael Stapf Berater Strategische Projekte
Structured Query Language
8 Erzeugen und Verwalten von Tabellen Ziele Kennenlernen der wichtigsten Datenbankobjekte Anlegen von Tabellen Datentypen zur Definition von Spalten.
Informatik I : Software höhere Programmiersprachen Java Klassen: hat Methoden (Funktionen) und Daten (Variablen) es kann mehrere Klassen geben nur eine.
Datenbanken im Web 1.
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #8 SQL (Teil 5)
Dynamic SQL Preparing a query: EXEC SQL PREPARE FROM ; Executing a query: EXEC SQL EXECUTE ; “Prepare” = optimize query. Prepare once, execute many times.
Trigger-abhängige Client Interaktionen (bezüglich Oracle8i)
JDBC1 Motivation(I) JDBC keine Abkürzung, sondern geschützter Name (inoffiziell: für Java Database Connectivity) unterschiedliche DBS haben unterschiedliche.
JDBC – Datenzugriff aus Java
1 Prof. Dr. Andreas SchmietendorfWS06/07 Übung 3 Test der Möglichkeiten des JDBC-Interfaces.
Deutsche Post ITSolutions GmbH Benutzung von XML in Oracle 10g Richard Dörfler, DOAG - Trier,
© 2003, Rudolf Jansen Einsatz der XML-Features der Oracle 9i DB zur Systemintegration Rudolf Jansen Freiberuflicher Entwickler und Autor
© 2012 TravelTainment Datenbankzugriffe in Java-Applikationen mit Hilfe des Spring Frameworks Simon Wirtz Seminarvortrag WS 13/14 Oktober 2013.
DOAG Regionaltreffen Trier/Saarland Verwendung von TopLink in J2EE Applikationen 09. September 2003 Marcus Keuper, Pfeil GmbH
© 2003, Rudolf Jansen Java in der Datenbank Rudolf Jansen Freiberuflicher Entwickler und Autor DOAG SIG Development,
XML-Erweiterungen in ORDBMS Seminar: DBMS für spezielle Anwendungen Florian Brieler.
Übung Datenbanksysteme I Embedded SQL, Stored Procedures, JDBC
Oracle und XML: Ein Überblick
JDBC Java DataBase Connectivity
Abfragesprache SQL in ORACLE
 Präsentation transkript:

© 2005, Rudolf Jansen JDBC Rudolf Jansen Freiberuflicher Entwickler und Autor DOAG - SIG Development

© 2005, Rudolf Jansen Agenda  JDBC-Treiberauswahl  Oracle 10g-Treiber  JDBC 4.0: Ein Ausblick

© 2005, Rudolf Jansen JDBC Java DataBase Connectivity Zugriff auf DB über Java-API-Funktionen Abbildung auf konkrete Datenbank durch JDBC-Treiber  Portabilität (theoretisch) PreparedStatement pStmt = conn.prepareStatement( "select prs_nr, prs_vorname, prs_nachname from person where prs_nr = ?"); for( int i = 1; i<=3; i++ ){ // Parameter setzen pStmt.setInt(1, i); // Statement ausfuehren resSet = pStmt.executeQuery(); // Ergebnis ausgeben.... }

© 2005, Rudolf Jansen JDBC-Treibertypen  Typ 1 (JDBC-ODBC-Brücke)  Zugriff über ODBC (OpenDataBaseConnectivity)-Treiber.  Voraussetzung: Existenz eines ODBC-Treiber auf dem Clientrechner.  Typ 2 (Native Treiber)  Umwandlung in herstellerspezifische Anfragen (bei Oracle OCI)  Voraussetzung: Existenz nativer Bibliotheken auf dem Clientrechner.

© 2005, Rudolf Jansen JDBC-Treibertypen  Typ 3  Umwandlung in herstellerunabhängiges Netzprotokoll.  Voraussetzung: Datenbankhersteller unterstützt dieses Protokoll.  Typ 4 (Thin-Treiber)  Umwandlung in herstellerspezifisches Netzprotokoll auf Basis von Java Sockets.  basieren vollständig auf Java  Vorteil: keine spezielle Software auf Clientseite nötig è Einsatz bei Applets

© 2005, Rudolf Jansen Oracle-JDBC-Treiber  OCI-Treiber (clientseitig)  Zugriff über OCI-Bibliotheken (C-Routinen)  Thin-Driver (clientseitig)  100 % Java  Zugriff über SQL*Net-Protokoll (Basis TCP/IP)  Thin-Driver (serverseitig)  Zugriff aus in der Datenbank laufenden Anwendungen auf andere Datenbanken  KPRB Treiber (serverseitig)  Zugriff aus in der Datenbank laufenden Anwendungen  Zugriff aus C-Routinen im selben Adressraum wie die SQL-Engine (Performancevorteile)

© 2005, Rudolf Jansen Oracle-JDBC-Treiber

© 2005, Rudolf Jansen Oracle-JDBC-Treiber Thin versus OCI Vorteile OCI – höherer Funktionsumfang (insbesondere bei Einsatz spezieller Oracle-Features) – schneller (?) Nachteil OCI: – erfordert bis einschl. 9i Oracle-Client-Installation auf jedem Client-Rechner Oracle 10g: – „Instant Client“-Paket – otn.oracle.com/tech/oci/instantclient/instantclient.html – Aufnahme der Dateien in den CLASSPATH genügt – keine Client-Installation mehr nötig

© 2005, Rudolf Jansen JDBC-Treiber nicht jeder JDBC-Treiber unterstützt alle JDBC-Features JDBC-Klasse DatabaseMetaData zur Abfrage der unterstützten Funktionen, z.B. - supportsSavepoints - supportsStatementPooling - supportsGetGeneratedKeys JDBC-Treiber-Auswahl:

© 2005, Rudolf Jansen JDBC-Treiber-Auswahl

© 2005, Rudolf Jansen JDBC-Treiber Zu beachten: Nicht jeder Datenbankserver unterstützt alle JDBC-Features Beispiel: Result Sets Ab JDBC 2.0: Scrollable ResultSets – Auch Rückwärts-Sprünge, absolute und relative Sprünge Connection.createStatement (int resultSetType, int resultSetConcurrency) – ResultSet – Typen: TYPE_FORWARD_ONLY TYPE_SCROLL_INSENSITIVE TYPE_SCROLL_SENSITIVE – Oracle: Clientseitiger Cache (Ressourcen-aufwendig)

© 2005, Rudolf Jansen Oracle 10g-JDBC-Treiber Neue Features : Connection Caching - Implicit Connection Cache - Fast Connection Failover JDBC 3.0-Support mit Ausnahme von - Verarbeitung automatisch erzeugter Schlüssel - Result-Set Holdability - Rückgabe mehrerer Result-Sets eines JDBC-Statements Verbesserung beim Einsatz des OCI-Treibers: - „Instant Client“-Paket - otn.oracle.com/tech/oci/instantclient/instantclient.html - Aufnahme der Dateien in den CLASSPATH genügt - keine Client-Installation mehr nötig

© 2005, Rudolf Jansen JDBC-Connection-Cache J2EE-Anwendungen – Connections werden nur kurz benötigt – kein Schließen der Verbindung – stattdessen Rückgabe in den Connection-Cache – bisher: alle Connections im Cache mit der gleichen Datenbank und dem gleichen DB-User Oracle 10g: – Anforderung aus RAC-Architektur: Fast Connection Failover

© 2005, Rudolf Jansen Fast Connection Failover Ausfall eines Knotens - Nachricht an den Connection-Pool - Umkonfiguration aller im Pool befindlichen Connections zu diesem Knoten Wiederanlauf eines Knotens - Umkonfiguration zwecks Lastverteilung OracleDataSource ds = new OracleDataSource(); ds.setUser(...);... ds.setConnectionCachingEnabled(true); ds.setFastConnectionFailoverEnabled(true);

© 2005, Rudolf Jansen Oracle JDBC-Erweiterungen zusätzliche Möglichkeiten – Umgang mit Oracle-eigenen Datentypen – Performancesteigerungen ABER: Portabilitätsverlust Package oracle.jdbc – ersetzt ab Oracle 9i das bisherige Package oracle.jdbc.driver – enthält u.a. folgende Klassen: OracleCallableStatement OracleConnection OracleResultSet OracleStatement OracleTypes

© 2005, Rudolf Jansen JDBC 4.0 – Ziele  Anpassung an aktuellen SQL-Standard SQL 2003 (insbesondere XML-Anbindung)  Integration aktueller JSRs (RowSets)  „Ease-Of-Development“  „Enterprise Needs“  Java 1.5 – Features (Annotations, Generics)

© 2005, Rudolf Jansen JDBC 4.0 – J2SE 5 Features Annotations:  Codierung über Metadaten  Toolgestützte Auswertung  API-Zugriff  Anwendungsgebiete: - Codegenerierung (z.B. EJB, RMI) - Informationen für andere Anwendungen (z.B. Projektverwaltung)  Beispiel: deprecated class Test public void eineAlteMethode(){ … }; public void dieNeueMethode(){…}; }

© 2005, Rudolf Jansen Datenbankzugriffe mit JDBC 4.0  Kein „DriverManager“ mehr im Sourcecode  Java kümmert sich selber um JDBC-Treiber-Management  host=”localhost”,port=”4711”, user=”scott”, password=”tiger”); Benutzerdefinierte Klasse für selektierte Daten class EmployeeResults { public String name; public String dept; public Integer salary; }

© 2005, Rudolf Jansen Datenbankzugriffe mit JDBC 4.0 Interface-Definition für Abfragen und DML interface EmployeeQueries * FROM EMPLOYEE") EmployeeResults * FROM EMPLOYEE WHERE salary > { sal } ") EmployeeResults getManagers(int EMPLOYEE SET salary = { sal } WHERE name = { name } ”) int changeSalary(int sal, String name);

© 2005, Rudolf Jansen Datenbankzugriffe mit JDBC 4.0  Einsatz der QueryFactory AllQueries aq = QueryFactory.create (AllQueries.class);  QueryFactory Annotations, d.h. „generiert“ die Datenbankzugriffe

© 2005, Rudolf Jansen Datenbankzugriffe mit JDBC 4.0  Datenbankzugriff über benutzerdefinierte Klasse EmployeeResults (und Generics-Erweiterung aus J2SE 5) DataSet rows = aq.getAllEmployees(); for (EmployeeResults elem: rows) { System.out.println(elem.name); System.out.println(elem.dept); System.out.println(elem.salary); } EmployeeResults newEmp = new EmployeeResults(); newEmp.name = “Bill Gates”; newEmp.dept = “Consulting”; newEmp.salary = new Integer(10000); rows.insert(newEmp);

© 2005, Rudolf Jansen JDBC 4.0 – XML-Erweiterungen Neue XML-Features in SQL:2003  Nativer XML-Datentyp Beispiel (Oracle): create table person ( prs_nr number, prs_data XMLTYPE );  SQL/XML-Funktionen

© 2005, Rudolf Jansen JDBC 4.0 – XML-Datentyp Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery( „select from tabelle …“); while(rs.next()) { XMLType xmlSpalte = (XMLType) rs.getObject(1); org.w3c.dom.Document doc=xmlSpalte.getDOM(); … }

© 2005, Rudolf Jansen JDBC 4.0 – SQL/XML-Funktionen Aus SQLX-Standard  xmlagg()  xmlattributes()  xmlconcat()  xmlelement()  xmlforest() Ziel: Generierung einer XML-Darstellung aus relational gespeicherten Daten

© 2005, Rudolf Jansen JDBC 4.0 – SQL/XML-Funktionen Beispiel: Relationale Tabelle person_rel create table person_rel ( prs_id NUMBER; prs_vorname VARCHAR2(100); prs_nachname VARCHAR2(100); );

© 2005, Rudolf Jansen JDBC 4.0 – SQL/XML-Funktionen Select XMLELEMENT( „Person“, XMLATTRIBUTES( prs_id AS „ID“), XMLFOREST( prs_vorname, prs_nachname ) ) from person_rel; Willi Schmitz Peter Meier 2 Zeilen ausgewählt

© 2005, Rudolf Jansen JDBC 4.0 – SQL/XML-Funktionen Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery( „Select XMLELEMENT( „Person“, XMLATTRIBUTES( prs_id AS „ID“), XMLFOREST( prs_vorname, prs_nachname ) ) from person_rel“); while(rs.next()) { XMLType xmlSpalte = (XMLType) rs.getObject(1); org.w3c.dom.Document doc=xmlSpalte.getDOM(); … }

© 2005, Rudolf Jansen JDBC 4.0 – Weitere Features Zusatzfunktionen für Connections: - „Connection.isValid()“ - „Connection.setClientInfo()“ für Systemmonitoring (wer benutzt welche Ressourcen) -„Connection.setName()“ für exakteren Zugriff aus ConnectionPool auf eine bestimmte Connection

© 2005, Rudolf Jansen Literatur JDBC 3.0-Spezifikation: JDBC 4.0 Early Draft (JSR 221): „Java Persistenz-Strategien: Datenzugriff in Enterprise-Anwendungen: JDO, JCA, EJB, JDBC, XML“ Andreas Holubek, Rudolf Jansen, Robert Munsky, Eberhard Wolff Software&Support Verlag 400 Seiten