WS06/07Prof. Dr. Andreas Schmietendorf1 Programmierung von Client/Server- Anwendungen Verwendung von API‘s (JDBC)

Slides:



Advertisements
Ähnliche Präsentationen
Object Relational Mapping
Advertisements

Objektrelationales Mapping mit JPA
Objektrelationales Mapping mit JPA Advanced Topics Jonas Bandi Simon Martinelli.
der Universität Oldenburg
der Universität Oldenburg
1 Kapitel 9: Datenbankapplikationen. 2 Datenbankapplikationen MS Access Embedded SQL JDBC Application JDBC Applet Java Servlet Java Server Pages Cold.
Datenbankanbindung mit ASP Wilhelm-Schickard-Schule Tübingen
2. DB-API: Programmierschnittstellen zu Datenbanken
Basis-Architekturen für Web-Anwendungen
Übung 5 Mehrstufige Client/Server-Systeme mit Enterprise Java Beans
WS06/07Prof. Dr. Andreas Schmietendorf1 Programmierung von Client/Server- Anwendungen Übersicht zur Vorlesung.
1 Prof. Dr. Andreas SchmietendorfWS06/07 – Labor C/S-Programmierung Übung 4 Mehrstufige Client/Server-Systeme mit JSPs, Servlets und JavaBeans (Web-Container)
Internet-Datenbanken
Datenbankzugriff im WWW (Kommerzielle Systeme)
Objektrelationales Mapping mit JPA Working with Persistent Objects Jonas Bandi Simon Martinelli.
Anbindung an Anwendungen
Ausnahmen HS Merseburg (FH) WS 06/07.
Internet-Datenbanken Grundlagen des WWW HTML HTTP Web-Anbindung von Datenbanken Servlets JSP JDBC XML Datenmodell Schemabeschreibungssprachen Anfragesprachen.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
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: Referenzen und Zeichenketten
Java: Grundlagen der Objektorientierung
Datenbankanbindung mit ASP Wilhelm-Schickard-Schule Tübingen
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.
Datenbank-Zugriffsschnittstellen am Beispiel von Oracle und PL/SQL.
JDBC Konzepte Realisierung von Zugriffen
Technik Gestaltung Navigation Daten. Übersicht Client Webbrowser InternetServer.
PRJ 2007/1 Stefan Dissmann Motivation Problem: gleiche Datenstrukturen werden für verschiedene Objekte gebraucht: z.B. Listen von Studierenden, Kunden,
PKJ 2005/1 Stefan Dissmann Ausblick Es fehlen noch: Möglichkeiten zum Strukturieren größerer Programme Umgang mit variabler Zahl von Elementen Umgang mit.
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
JDBC -Java Database Connectivity-. 15./22. April 2004JDBC2 JDBC.... verbindet Java-Programme mit SQL-basierten Datenbanken.. liefert eine generische SQL-API.
Portierung von Java nach C
DVG Klassen und Objekte
EDV Parallelprogrammierung1 Parallelprogrammierung mit JAVA.
JDBC EDV JDBC.
Einführung in die Programmierung Datensammlung
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.
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)
SQL PHP und MySQL Referat von Katharina Stracke und Carina Berning
Wir bauen uns eine Webapplikation!
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Windows Presentation Foundation, Vorlesung Wintersemester 2013/14 Prof. Dr. Herrad Schmidt WS 13/14 Kapitel 9 Folie 2 ADO.NET (1) Klassen für Zugriffe.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Adaption von K-Means Algorithmen an Datenbanken
Getting Started Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
JDBC (Java DataBase Connectivity)
Datenanbindung in Webapplikationen
SQLite und XML in PHP 5.
Learning By Doing Ausnahmebehandlung Exceptions (Ausnahmebehandlung) Typische Fehlverhalten zur Laufzeit: s. Buch S. 287ff -Verwendung von null-Objekten.
Datenbankanbindung mit
Embedded SQL in Java Michael Stapf Berater Strategische Projekte
Mehrschichten- Architektur. Sinn: Zur Strukturierung von Software, die eine spätere Änderung erleichtert und eine Wiederverwendbarkeit der einzelnen Komponenten.
Persistenz: Objekt-Lebensdauer In RDBMS wird Lebensdauer von Werten durch ihren Typ festgelegt: Instanzen von Relationstypen sind persistent, alle anderen.
WS 2013/14 Datenbanksysteme Do 17:00 – 18:30 R Vorlesung #8 SQL (Teil 5)
Java-Kurs Übung Besprechung der Hausaufgabe
Threads in Java Threads  Sprachumfang von Java Der Java-Standard fordert nur die Unterstützung von Thread-Prioritäten. Es gibt keine Forderung bzgl.:
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
Reflection API1 Motivation Reflection API Core Reflection API: java.lang.reflect Seit JDK 1.1 integraler Bestandteil der Java- Klassenbibliothek Ermöglicht:
O/R - Mapper Hibernate ETIS SS04. Hibernate 2 Gliederung Motivation Architektur Persistente Klassen Mapping-Files Konfiguration und Datenbanken Ablauf.
1 Prof. Dr. Andreas SchmietendorfWS06/07 Übung 3 Test der Möglichkeiten des JDBC-Interfaces.
© 2012 TravelTainment Datenbankzugriffe in Java-Applikationen mit Hilfe des Spring Frameworks Simon Wirtz Seminarvortrag WS 13/14 Oktober 2013.
JDBC Java DataBase Connectivity
 Präsentation transkript:

WS06/07Prof. Dr. Andreas Schmietendorf1 Programmierung von Client/Server- Anwendungen Verwendung von API‘s (JDBC)

WS06/07Prof. Dr. Andreas Schmietendorf2 Übersicht zur Vorlesung  Persistenzsicherung von Java-Objekten  Datenbankanbindung mit Hilfe von JDBC  Beispiel zur Verwendung des JDBC-Interfaces  Verwendung von Prepared Statements  Weiterführende Themenstellungen zum JDBC-Interface

WS06/07Prof. Dr. Andreas Schmietendorf3 Möglichkeiten zur Persistenzsicherung von Java-Objekten

WS06/07Prof. Dr. Andreas Schmietendorf4 Möglichkeiten zur Persistenzsicherung  Objektserialisierung – Objekt als Datenstrom wegschreiben  Manuelles OR-Mapping -Verwendung des JDBC-Frameworks -Embedded SQL (sehr verbreitet in C bzw. C++, bei Java aber keine Bedeutung)  Nutzung objektorientierter Datenbanksysteme  Verwendung des DAO-Entwurfsmusters (Datenabstraktion)  Einsatz von EJB‘s (Entity Beans)  OR-Mapping Tools (z.B. Hibernate)

WS06/07Prof. Dr. Andreas Schmietendorf5 Möglichkeiten zur Persistenzsicherung

WS06/07Prof. Dr. Andreas Schmietendorf6 Möglichkeiten zur Persistenzsicherung

WS06/07Prof. Dr. Andreas Schmietendorf7 Möglichkeiten zur Persistenzsicherung

WS06/07Prof. Dr. Andreas Schmietendorf8 Möglichkeiten zur Persistenzsicherung Hibernate-Anwendungen bestehen klassisch aus 4 Teilen: 1. Hibernate-Konfigurationsdatei (XML) 2. Pro persistenter Klasse eine Hibernate Mapping XML-Datei 3. Der Hibernate Java Library (JAR-Datei) 4. HQL (Hibernate Query Language)  OO-Erweiterung zu SQL sowie: 1. Den Java-Klassen 2. Der Datenbank mit dem Datenbank Schema

WS06/07Prof. Dr. Andreas Schmietendorf9 Möglichkeiten zur Persistenzsicherung OR-Mapping Tools:

WS06/07Prof. Dr. Andreas Schmietendorf10 Datenbankanbindung mit Hilfe von JDBC

WS06/07Prof. Dr. Andreas Schmietendorf11 Datenbankanbindung mit JDBC  JDBC - Java Database Connectivity API zur Programmierung von Datenbankverbindungen (Konzeptionell angelehnt an ODBC)  JDBC nutzt für den Datenbankzugriff das durch die X/Open standardisierte Call-Level-Interfaces (CLI) -Low level API, kein direktes objektorientiertes Mapping -Implementierungen von Oracle, Sybase, Informix, DB/2, IMS,...  Aufgaben des JDBC-Interface -Verbindungsaufbau zur Datenbank -SQL Kommandos (vgl. SELECT name FROM MITARBEITER) -Ergebnisse verarbeiten und in der Oberfläche anzeigen

WS06/07Prof. Dr. Andreas Schmietendorf12 Datenbankanbindung mit JDBC  Das JDBC-Interface bietet verschiedene Treibertypen (Typ 1 bis 4) -Entscheidung über die Schichten der Applikation -Vorteile einer mehrschichtigen C/S-Architektur berücksichtigen  Verwendbare Systeme (ohne Firewall): -Web-Server: MS Internet Information Server -JDBC-Applikations-Server (z.B. Weblogic „Tengah“ -MS SQL-Server

WS06/07Prof. Dr. Andreas Schmietendorf13 Datenbankanbindung mit JDBC

WS06/07Prof. Dr. Andreas Schmietendorf14 Datenbankanbindung mit JDBC  Type 1 Treiber: JDBC-ODBC Bridge -keine Hardwareunabhängigkeit bei Applet-Anwendungen -DB-Zugriffe erfolgen via dem ODBC-Treiber -Zu fast jedem DB-System sind ODBC-Treiber verfügbar  Type 2 Treiber: Native partly Java Driver -Treiber des entsprechenden DBMS Herstellers werden benötigt -Wandlung der JDBC-Aufrufe in herstellerspezifische Client-API für das jeweilige Datenbank-System Merke: Treibertypen 1 und 2 sind für Applet-Anwendungen ungeeignet.

WS06/07Prof. Dr. Andreas Schmietendorf15 Datenbankanbindung mit JDBC  Type 3 Treiber: Java Net all Java-Driver -Treiber nur zum Teil in Java geschrieben (eigentlich Proxy beim Client) -Middleware zwischen Java-Client und DB-Server notwendig -keine spezielle Software beim Client (Applets möglich) notwendig -mehrstufige C/S-Architekturen sind realisierbar (n-Tier)  Type 4 Treiber: -Treiber komplett in 100% Java geschrieben -Treiber wird bei Start des Browsers übertragen (rel. groß) -Mehrstufige C/S-Architekturen werden unterstützt Schlußfolgerung: Treibertyp 4 ist für mehrstufige C/S-Architekturen die optimale Lösung (z.B. Einsatz im Kontext eines Web-Serves)

WS06/07Prof. Dr. Andreas Schmietendorf16 Datenbankanbindung mit JDBC SQL-2 Entry Level Standard von 1992  Problem der Portierung einer Anwendung auf ein anderes Datenbanksystem (Problem der verschiedenen SQL-Dialekte)  Forderung von SUN an die JDBC-Hersteller zur Sicherung eines minimalen Anspruches auf Standardisierung  SUN stellt eine entsprechende Test-Suite zum Nachweis der Konformität von JDBC-Treibern bereit  Kritisch ist die Verwendung von Funktionen die über den o.g. Standard hinausgehen

WS06/07Prof. Dr. Andreas Schmietendorf17 Datenbankanbindung mit JDBC Meistgenutzte Klassen des JDBC-API (import java.sql.*) -java.sql.DriverManager Verwalten der Datenbankverbindung -java.sql.DriverConnection Verbindungsaufbau zur Datenbank -java.sql.Statement beinhaltet den auszuführenden SQL-Befehl wird als ASCI-Zeichenkette übergeben -java.sql.ResultSet Zugriff auf die Ergebnismenge des ausgeführten SQL-Befehls

WS06/07Prof. Dr. Andreas Schmietendorf18 Datenbankanbindung mit JDBC Öffnen einer Verbindung  Bevor auf die DB zugegriffen werden bedarf es einer Verbindung  Schritte beim Verbindungsaufbau -Datenbanktreiber laden -Initialisierung des Datenbanktreibers -Erzeugen eines Verbindungsobjektes  Verbindungsobjekt -Bleibt während der gesamten Verbindung bestehen -Lieferant für spezielle Objekte zur Abfrage & Veränderung der DB

WS06/07Prof. Dr. Andreas Schmietendorf19 Datenbankanbindung mit JDBC Ausprägungen von getConnection (Verbindungsaufbau zur Datenbank)  static Connection getConnection( string url )  static Connection getConnection( string url, String user, String password )  static Connection getConnection( string url, Properties info )

WS06/07Prof. Dr. Andreas Schmietendorf20 Datenbankanbindung mit JDBC Aufbau des Connection-Strings:  Besteht aus mehreren Teilen  Durch Doppelpunkt voneinander getrennt  1. Teil: immer jdbc  2. Teil: Sub-Protokoll – Angabe des konkreten Treibers  Weitere Teile: Treiberspezifisch  Beispiele: Firebird-DB con = DriverManager.getConnection("jdbc:firebirdsql:localhost/3050:DirDB","sysdba","masterkey"); MySQL-DB con = DriverManager.getConnection("jdbc:mysql://localhost/hs_mitarbeiter", "root", "");

WS06/07Prof. Dr. Andreas Schmietendorf21 Datenbankanbindung mit JDBC Erzeugen von Anweisungsobjekten  Abfragen und Änderungen erfolgen mittels Anweisungsobjekten  Implementieren das Interface Statement bzw. entspr. Subinterfaces  Einfachste Form „createStatement“ mit folgenden Methoden -executeQuery (String sql) -executeUpdate (String sql)  Erzeugung unparametrisierter Abfragen und Änderungen der DB  Rückgabe: -Einfacher numerischer Ergebniswert (Erfolg bzw. Misserfolg) -Menge von Datenbanksätzen, als Ergebnis der Abfrage

WS06/07Prof. Dr. Andreas Schmietendorf22 Datenbankanbindung mit JDBC Statement-Objekte:  Häufig kostenintensive Ressourcen -Belegung von Speicherplatz -Belegung von Rechenzeit  Erzeugung einer großen Anzahl sollte vermieden werden  Besserer Stil: -Anlegen einer Reihe vordefinierter Statement-Objekte -Mehrfache Verwendung von Statement-Objekten -Allerdings besteht die Gefahr undefinierter Zustände

WS06/07Prof. Dr. Andreas Schmietendorf23 Datenbankanbindung mit JDBC Datenbankabfragen – Verwendung der executeQuery-Methode: public ResultSet executeQuery (String sql) throws SQLException  Die oben dargestellte Methode erwartet eine für die Datenbank gültige SELECT-Anweisung (z.B. SELECT * FROM kunden WHERE name = ‘Meier‘) und gibt einen ResultSet zurück. Das ResultSet repräsentiert die Ergebnismenge.  Schrittweisen durchlaufen des ResultSet mittels der Methode next. boolean next()

WS06/07Prof. Dr. Andreas Schmietendorf24 Datenbankanbindung mit JDBC Datenbankabfragen – Verwendung der executeQuery-Methode:  Zugriff auf die Spalten des durch next referenzierten Tupels -getXXX (int n), Übergabe eines numerischen Wertes -getXXX (String x), Übergabe eines Spaltennamens  Ausgewählte Get-Methoden von ResultSet -getBoolean -getByte -getDate -getString -getInt

WS06/07Prof. Dr. Andreas Schmietendorf25 Datenbankanbindung mit JDBC Datenbankänderungen – Verwendung der executeUpdate-Methode: public int executeUpdate (String sql) throws SQLException  Die oben dargestellte Methode erwartet eine für die Datenbank gültige INSERT, UPDATE oder DELETE-Anweisung (z.B. INSERT INTO kunden VALUES (122, ‘Meier‘, ‘Andreas‘, 13509, ‘Berlin‘, ‘Wittestrasse 30H‘) bzw. eine DDL-Anweisung zum Ändern der Datenbankstruktur.  Diese Methode gibt keine Ergebnismenge zurück!  Bei Erfolg wird 1 zurückgegeben, andernfalls eines SQLException

WS06/07Prof. Dr. Andreas Schmietendorf26 Datenbankanbindung mit JDBC Klasse SQLException (Ausnahmebehandlung):  Verbindungsaufbau zur Datenbank ist fehlgeschlagen  Probleme mit SQL-Anweisungen -Syntaxfehler -Semantische Fehler – z.B. falsche Typisierung  Behandlung einer SQLException catch (SQLException sqle) while (sqle != null) { System.err.println(sqle.toString()); System.err.println(“SQL-Status: “ + sqle.getSQLState()); System.err.println(“ErrorCode: “ + sqle.getSQLState()); }

WS06/07Prof. Dr. Andreas Schmietendorf27 Beispiel für die Verwendung des JDBC-Interfaces

WS06/07Prof. Dr. Andreas Schmietendorf28 JDBC-Beispiel Benötigte Software bzw. Systeme:  Laufende Firebird-Datenbank (z.B. mittels IBO-Console bearbeiten)  “firebird-jca-jdbc-driver”  firebirdsql-full.jar – enthält alle benötigten Klassen -firebirdsql.jar -mini-concurrent.jar -jaas.jar (Innerhalb des JDK 1.4) -mini-j2ee.jar (JDBC classes) -log4j-core.jar (Logging-Funktionalitäten)  JDK 1.4.x - Setzen der Java-Umgebungsvariablen -Unter WinXP: Start – Einstellungen – Systemsteuerung – System - Erweitert -CLASSPATH .;C:\j2sdk1.4.2_08\lib\firebirdsql-full.jar -JAVA_HOME  C:\j2sdk1.4.2_08

WS06/07Prof. Dr. Andreas Schmietendorf29 JDBC-Beispiel  Firebank-Datenbank mittels DDL aufsetzen  Java-Programm implementieren -Treiber laden Class.forName("org.firebirdsql.jdbc.FBDriver"); -Variable für Connection-Objekt: private Connection con; -Datenbankverbindung (Treiber:Server:Datenbank) herstellen mit:  DriverManager.getConnection("jdbc:firebirdsql:localhost/3050:C:/Pro gramme/Firebird/examples/employee.gdb","sysdba","masterkey"); -Treiber: jdbc:firebirdsql -Server: localhost/3050 -Datenbank: C:/Programme/Firebird/examples/employee.gdb -Nutzername/Passwort: sysdba/masterkey

WS06/07Prof. Dr. Andreas Schmietendorf30 JDBC-Beispiel

WS06/07Prof. Dr. Andreas Schmietendorf31 JDBC-Beispiel import java.sql.*; public class JDBCTest { // A. Schmietendorf – Fachhochschule für Wirtschaft Berlin – WS06/07 // JDBC-Testbeispiel im Rahmen der Vorlesung Programmierung C/S-Systeme private Connection con; private java.sql.Statement stm; public static void main(String argv[]) { new JDBCTest().access(); }

WS06/07Prof. Dr. Andreas Schmietendorf32 JDBC-Beispiel public void access() { try { Class.forName("org.firebirdsql.jdbc.FBDriver"); } catch(ClassNotFoundException ex) { System.out.println("Class.forName : " + ex.getMessage()); } try { con = DriverManager.getConnection("jdbc:firebirdsql:localhost/3050:C:/Programme/Firebird/ examples/employee.gdb","sysdba","masterkey"); stm = con.createStatement(); stm.executeUpdate("INSERT INTO country VALUES ('Bulgaria','Leva')"); System.out.println("Daten erfolgreich in die Datenbank eingetragen");

WS06/07Prof. Dr. Andreas Schmietendorf33 JDBC-Beispiel System.out.println("Daten aus der Datenbanktabelle auslesen"); ResultSet rs = stm.executeQuery ("SELECT * FROM country"); while (rs.next ()) { String country = rs.getString (1); String currency = rs.getString (2); System.out.println(country + " " + currency); } System.out.println("Ende der Datenausgabe - A. Schmietendorf"); // Ressourcenffreigabe rs.close(); con.close(); } catch (SQLException ex) { System.out.println(ex.getMessage()); } }

WS06/07Prof. Dr. Andreas Schmietendorf34 JDBC-Beispiel  Verwendung eines ResultSet-Objektes zur Ergebnisverwaltung der Anfrage  Navigation über die Ergebnismenge erfolgt nach dem Cursor-Prinzip  Weitersetzen des Cursors mit der Methode next  Zeilenauswahl entspricht der aktuellen Position des Cursors  Spaltenauswahl der aktuellen Tupel mit getXXX-Methode und Spaltenindex ResultSet rs = stm.executeQuery ("SELECT * FROM country"); while (rs.next ()) { String country = rs.getString (1); String currency = rs.getString (2); System.out.println(country + " " + currency); }

WS06/07Prof. Dr. Andreas Schmietendorf35 JDBC-Beispiel

WS06/07Prof. Dr. Andreas Schmietendorf36 Verwendung von Prepared Statements

WS06/07Prof. Dr. Andreas Schmietendorf37 Prepared Statements  Prepared Statements sind parametrisierte SQL-Anweisungen  Werden deklariert und zum Vorkompilieren der DB übergeben  Können später beliebig of ausgeführt werden  Vorteile: -Vorbereitungssarbeiten werden nur einmal erledigt Syntaxanalyse Vorbereitung der Abfragestrategie und -optimierung -Bessere Performance  JDBC  Prepared Statements im Interface PreparedStatement

WS06/07Prof. Dr. Andreas Schmietendorf38 Prepared Statements  Methode preparedStatement: PreparedStatement pst = con.preparedStatement ( “SELECT * FROM ?“ );  Parametrisierung von executeQuery bzw. executeUpdate -Aufruf einer entsprechenden set-Methode je Fragezeichen  Ausführung mittels executeQuery bzw. executeUpdate

WS06/07Prof. Dr. Andreas Schmietendorf39 Prepared Statements

WS06/07Prof. Dr. Andreas Schmietendorf40 Prepared Statements

WS06/07Prof. Dr. Andreas Schmietendorf41 Prepared Statements public class DBClient { public static void main(String[] args) throws Exception { DBConnect MyDBConnect = new DBConnect(); // Suche ueber den Namen String res1 = MyDBConnect.searchForName("Mueller"); System.out.print(res1); // Suche ueber die -Adresse String res2 = System.out.print(res2); // Suche ueber die Raumnummer String res3 = MyDBConnect.searchForRaum("113"); System.out.print(res3); }

WS06/07Prof. Dr. Andreas Schmietendorf42 Prepared Statements public class DBClient { public static void main(String[] args) throws Exception { DBConnect MyDBConnect = new DBConnect(); // Suche ueber den Namen String res1 = MyDBConnect.searchForName("Mueller"); System.out.print(res1); // Suche ueber die -Adresse String res2 = System.out.print(res2); // Suche ueber die Raumnummer String res3 = MyDBConnect.searchForRaum("113"); System.out.print(res3); }

WS06/07Prof. Dr. Andreas Schmietendorf43 Prepared Statements

WS06/07Prof. Dr. Andreas Schmietendorf44 Prepared Statements

WS06/07Prof. Dr. Andreas Schmietendorf45 Prepared Statements

WS06/07Prof. Dr. Andreas Schmietendorf46 Prepared Statements

WS06/07Prof. Dr. Andreas Schmietendorf47 Weiterführende Themenstellungen zum JDBC-Interface

WS06/07Prof. Dr. Andreas Schmietendorf48 Transaktionssicherung  Steuerung des Transaktionsverhalten der Datenbank über 3 Methoden des Connection-Objektes -void commit() -void rollback() -void setAutoCommit (boolean autoCommit)  Nach dem Aufbau einer JDBC-Verbindung -DB im Auto-Commit-Modus (Vorgabe JDBC) -Jede einzelne Anweisung gilt als separate TA  Änderung mittes setAutoCommit (false) -TA müssen explizit durch Aufruf von commit bestätigt werden -Mittels rollback kann eine TA zurückgesetzt werden

WS06/07Prof. Dr. Andreas Schmietendorf49 Transaktionssicherung Transaction Isolation Level (Beeinflussung des Sperrverhalten) -Steuerung des Grades der Parallelität -Hoher Transaction Level  desto weniger Konsistenzprobleme  geringerer Durchsatz, d.h. Performanceprobleme -Niedriger Tranaction Level  ggf. potentielle Konsistenzprobleme  besseres Performanceverhalten

WS06/07Prof. Dr. Andreas Schmietendorf50 Transaktionssicherung  Verfügbare Transaction Isolation Level -Connection.TRANSACTION_NONE -Connection.TRANSACTION_READ_UNCOMMITTED -Connection.TRANSACTION_READ_COMMITTED -Connection.TRANSACTION_REPEATABLE_READ -Connection.TRANSACTION_SERIALIZABLE  Lesen und Ändern des Transaction Isolation Level -int getTransactionIsolation ( ) -void setTransactionIsolation ( )