Title: Architektur von Web-Datenbanksystemen
1Architektur von Web-Datenbanksystemen
2Schichtenarchitektur
- Aufteilung einer Web-DB-Anwendung in verschiedene
Schichten - Logische Schichten vs. physische Schichten
- Physisch
- Aufteilung der Anwendung auf Client, DB-Server
und Middleware - Middleware ein Webserver oder mehrere
Application Server - Logisch
- Einordung in einzelne Schichten hinsichtlich der
Aufgabenverteilung - Gängiges Modell 3-Schichten-Architektur
33-Schichten-Architektur
- Präsentationsschicht
- Visualisierung der Dokumente auf Anwenderseite
- Keine Anwendungslogik zur Erstellung der Seiten
(thin clients) - Client Rechner mit Browser einschl. PlugIns
- Anwendungslogikschicht
- Weiterleitung von Anfragen des Client an den
entsprechenden Dienst, Datenbankanfragen,
Erstellung dynamischer Seiten und Zurücksendung
an den Client - Weitere Aufgaben
- Verwaltung von Transaktionen
- Lastverteilung der Anfragen
- Sicherheitsaufgaben
- Datenhaltungsschicht
- Speicherung der Daten Datenzugriff
- Typischerweise Datebanksystem (auch Dateien
möglich)
43- und 4-Schichtenarchitekturen
5Klassifikation von Web-Informationssystemen
(WebIS)
- unterschiedliche Komplexitätsgrade
- Anwendungsgebiet bestimmt Architektur
- in komplexen WebIS mehrere Architektur-varianten
gleichzeitig vorhanden - Varianten
- Statische WebIS
- WebIS mit DB-Unterstützung
- Applikationsorientierte WebIS
- Ubiquitäre WebIS
- Portal-orientierte WebIS
6Statische WebIS
- Dokumente in statischer Form auf Webserver
abgelegt - Basis HTTP-Protokoll Web-Client lt-gt Web-Server
- einfache Interaktivität (CGI, HTML-Formulare)
- Vermischung von Präsentation, Inhalt und
Hypertext - manuelle Pflege, Gefahr von Inkonsistenzen
7Statische WebIS Bewertung
- Vorteile
- Einfachheit und Stabilität
- niedrige Antwortzeiten
- Einsatzgebiet
- geringe Anzahl von Webseiten
- niedrige Änderungsfrequenz
- Heterogenität der Webseiten hinsichtlich
Hypertextstruktur und Präsentation
8WebIS mit DB-Unterstützung
Web-Client
Web-Server
Präsentation
DBS-Server
Inhalt
- Vorteile
- vereinfachte Aktualisierung der Webseiten
- hoher Grad an Interaktivität
- strukturierte Suche auf Basis von DB-Anfragen
- dezentrale Aktualisierung des Datenbestandes
- Nachteile
- Verwaltung der Abbildungsvorschriften für
Zusammenstellung der Webseite erforderlich
9WebIS mit DB-Unterstützung (Forts.)
- Motivation (Einsatzgebiet z.B. Produktkatalog)
- große Anzahl von Webseiten
- hohe Änderungsfrequenz
- Homogenität der Webseiten hinsichtlich
Hypertext-struktur und Präsentation - Nutzung existierender (Legacy)Datenbestände
- Weiterführung
- Integration heterogener verteilter Daten
- strukturierte Daten (Datenbanken)
- unstrukturierte Daten (Textdokumente)
- semistrukturierte Daten (HTML-Dateien)
10Applikationsorientierte WebIS
Web-Client
Web-Server
Applikations-Server
PräsentationApplikationslogik
IIOP
Inhalt
DBS-Server
- Funktionalität des Applikations-Servers
- DB-Anbindung
- Transaktionsmanagement
- Sicherheit
- Lastausgleich
- Caching
11Applikationsorientierte WebIS (Forts.)
- Produkte
- kombinierte Web-/Applikationsserver Coldfusion,
Netscape Application Server, Oracle Internet
Application Server - Enterprise-Application-Server WebSphere (IBM),
WebLogic (Bea Systems) - Motivation
- hohe zu erwartende Server-Last, bei großer Anzahl
gleich-zeitig zugreifender Clients - komplexe Geschäftslogik, z.B. bei Online-Kauf
oder Online-Buchung) - hohe Transaktionsorientiertheit, z.B. bei
Online-Banking-Anwendungen
12Ubiquitäre WebIS
Web-Client
Web-Server
PräsentationApplikationslogik
Applikations-Server
Anpassungs-komponente
DBS-Server
Inhalt
- Ziel
- richtigen Dienst
- zum richtigen Zeitpunkt
- am richtigen Ort
- in der richtigen Form
- anbieten
13Ubiquitäre WebIS (Forts.)
- Produkte
- Oracle Wireless Application Server
- WebSphere Transcoding Publisher (IBM)
- Motivation
- Zugriff auf die im WebIS präsentierte Information
nicht nur über WWW, sondern z.B. auch über mobile
Endgeräte - Anpassung der Inhalte und/oder der
Präsentationsaspekte an Benutzerprofile
(Personalisierung) - Realisierung lokations/zeitabhängiger Dienste,
wie z.B. lokationssensitiver Museumsführer
14Portal-orientierte WebIS
Web-Client
Web-Server
Aggregation
Präsentation
Portlet 1
Portlet 2
Portlet 3
Applikationslogik
Web Service 1
Web Service 2
Web Service 3
Inhalt
Daten 2
Daten 3
Daten 1
Architektur eines portal-orientierten WebIS
15Portalorientiertes WebIS (Forts.)
- Große Anwendungen mit vielen Diensten ? erfordert
portalorientierte Architektur - Portal zentraler Zugang zu einem
Anwendungssystem, welches verschiedene Dienste
und Anwendungen integriert und z.B. Funktionen
zur Suche oder Personalisierung bereitstellt - Portlets Teile von Dokumenten aus
unterschiedlichen Quellen - Zusammensetzen von Portlets zu ganzen Seiten, die
über Web-Server an den Client verschickt werden - Einsatz von Web Service-Technologien, die den
Aufruf von Diensten über definierte
Schnittstellen ermöglichen - Vorteil hohe Flexibilität bei der Verwendung der
Portlets
16HTTP-Protokoll
- Hypertext Transfer Protokoll (HTTP) für
Kommunikation zwischen Web-Server und Client - Funktionsweise Request-Response-Prinzip
- HTTP-Request URL
- HTTP-Response gewünschte Dokument
- Verbindungs- und statusloses Protokoll keine
dauerhafte Verbindung, keine Speicherung des
Zustands zwischen Client und Server - Methoden zur Anforderung eines Dokuments
- GET Client fordert die angegebene URL an, wobei
eventuelle Parameter im String der URL mitgegeben
werden - POST Client schickt Daten an den Server, wobei
diese nicht in der URL sondern direkt im Header
der Anforderung übergeben werden - HEAD, PUT, DELETE keine Bedeutung für die
Entwicklung von Webapplikationen
17HTTP Request
- 1. Zeile Methode, Ressource, Version des
HTTP-ProtokollsGET http//www.test.de/index.html
HTTP/1.0 - Mehre Message Header, die zusätzliche
Informationen übertragen - Accept MIME-Typen, die der Client verarbeiten
kann - Host Domainname des Webservers
- Referer URL der Herkunftsressource
- User-Agent Name und Version des Clientbrowsers
- Authorization Benutzername und Paßwort des
Clients, Authorization Header als Reaktion auf
WWW-Authenticate-Header des Servers zum Zugriff
auf das gewünschte Dokument - Bei Methode POST Anhängen von Daten (aus
Formular) an die Headerinformationen,
z.B.Eingabe1StrasseEingabe254455
18HTTP Response
- Status
- Version des verwendeten HTTP-Protokolls
- Statuscode
- textuelle Beschreibung des Status
- Beispiel
- Optionale Response-Header
- Server Name und Version des Webservers
- WWW-Authenticate Verlangt vom Client eine
Authentifizierung und gibt u.a. das
Authentifizierungsschema an - Location URL der Ressource
- Eigentliches Dokument (falls eines
zurückgeliefert werden soll)ltHTMLgtltHEADgtltTITLE
gtTitelzeilelt/TITLEgtlt/HEADgtltBODYgt
19Anbindungsarchitekturen
20Anbindungsarchitekturen - Varianten
- Anwendung mit statischen Seiten Datenbankinhalte
manuell einarbeiten, keine Kommunikation mit der
Datenbank - Realisierung der Webanwendung als CGI-Programm
Datenbankzugriff vom Programm. Die fertige
HTML-Seite wird zum Client übertragen. - Applets werden zum Client übertragen und dort
ausgeführt. Die Kommunikation mit der DB findet
dabei direkt mit dem Client statt, z.B. über JDBC
(nicht HTTP!) - Server-APIs serverseitige Erweiterungen für den
Zugriff auf die Datenbank und den Aufbau der
HTML-Datei. - Einsatz von Servlets in der Serverumgebung,
erfordert spezielle Servlet Engine und eine Java
Virtual Machine (JVM). DB-Zugriff erfolgt z. B.
über die JDBC-API oder direkt, wenn Servlet
Engine im Datenbankserver integriert ist. - Auslagerung komplexer Programmlogik auf einen
Applikationsserver. Dieser realisiert auch die
Verbindung zur Datenbank, wobei DB-Verbindungen
zur Performance-Verbesserung zwischengespeichert
werden. - Erstellung der HTML-Dateien über einen
Präprozessor Verarbeitung von XML- und
XSL-Dateien (siehe auch Vorlesung XML-Datenbanken
/ 7. Semester)
21Anbindungstechnologien
22Anforderungen an eine DB-Server-Anbindung
- Integrierte Benutzerschnittstelle
- Verschiedene Medientypen
- Browser-Darstellung, keine proprietären Formate
- Interaktivität
- erfordert zustandswahrende Verbindung
- Konsistenz und Datenintegrität
- Performance
- Sicherheit
- Programme, die von Web-Server geladen werden
- Skalierbarkeit
- Offenheit
- Konflikt mit Performance (Java vs. Microsoft)
23Client-Seitige DB-Anbindungen
Web-Client
Web-Server
Applet
JVM
DBS-Server
JDBC
- Prinzip
- Übertragung von Java Applets (plattformunabhängige
r Bytecode) vom Web-Server zum Client - Direkte Verbindung zum Datenbank-Server über JDBC
- Ausführung der Clients durch eine Java Virtual
Machine (JVM)
24Serverseitige DB-Anbindung
- Generierung von HTML-Seiten im Server und
Zurücksenden an den Client - Daten aus der Datenbank können in HTML-Dokument
enthalten sein - 2 Ansätze (je nach Generierungsmethode)
- Externe Programme erzeugen den HTML-Code des
Dokuments (HTML-Generierende Anwendungen) - Erweiterung der Serverfunktionalität
Anreicherung des HTML-Codes um spezifische
Funktionalitäten zum Einfügen von dynamischem
Inhalt ins Dokument (HTML-Erweiterungen)
25Serverseitige Anbindung Externe Programme
26Serverseitige Anbindung Erweiterung der
Serverfunktionalität
27Serverseitige Anbindung
- Dokumente können nur die Darstellungsmöglichkeiten
von HTML nutzen - Überprüfung von Benutzereingaben durch
clientseitige Skriptsprache (Java Script) oder
nach Senden der Anfrage - Anzeige der Seiten auf beliebigem Browser, keine
zusätzliche Installation von Programmen auf
Clientseite erforderlich - DB-Verbindung wird nur von Seiten des Web- oder
Applikationsservers aufgebaut, keine Verbindung
von der Clientseite über das zustandslose
HTTP-Protokoll - mehrschrittige Anfragen eines Clients an die DB
nur über Umwege realisierbar
28Serverseitige Technologien im Überblick
- CGI (am Beispiel Perl)
- Web-Server API
- Server Side Include (SSI)
- Active Server Page (ASP)
- PL/SQL und PL/SQL Server Page (PSP)
- PHP
- Übergreifende Technologien
- Java Database Connectivity (JDBC)
- SQLJ
- Java und J2EE (Enterprise Java Beans)
- Java Servlet
- Java Server Page (JSP)
29Common Gateway Interface (CGI)
- Keine Programmiersprache
- Kann mit allen Sprachen realisiert werden, die
Zugriff auf Umgebungsvariable sowie die
Standardein- und ausgabe erlauben (z.B. Perl, C,
C) - Standardisierte Schnittstelle für die
Kommunikation zwischen Web-Server und externen
Programmen (Übergabe von Daten von HTML-Seiten an
Programme) - Aufbau
- Verschiedene Umgebungsvariablen für die
Datenübertragung Web-Server ? CGI-Programm - Variablen mit festem Namen bei jeder
Client-Anfrage neu initialisiert und vom
CGI-Programm für die HTML-Generierung nutzbar
30Umgebungs-variablen einer CGI-Anwendung
31Allgemeiner Ablauf der Programmausführung bei CGI
Server-Rechner
Client (Anwender)
2. CGI-Skriptaufrufen
HTML-Dateimit Formular
Daten-bank
CGI-Skript
1. Formularabschicken
WWW-Server
4. HTML-Datei aus Abfrage-Report erzeugen
3. DB abfragen Abfrage-Report der DB auswerten
übertragen
automatischerzeugteHTML-Datei
automatischerzeugteHTML-Datei
5. HTML-Datei übertragen
32Ablauf der Verarbeitung bei Ablauf eines
CGI-Programms
33CGI Bewertung
- Vorteile
- Unterstützung durch alle Web-Server
- anforderungsspezifisch programmiert
- schnell und flexibel
- Nachteile
- Pro Interaktion Start eines CGI-Prozesses /
Aufbau einer DB-Verbindung (Verbesserung FastCGI) - Kein Transaktionskonzept zwischen Client und
WWW-Server, Problem der Realisierung von
Zuständen - Logische Formular-Eingabefehler erst im
CGI-Programm erkannt - Sicherheit (da Zugriff auf Betriebssystem-Ressourc
en des Web-Servers) - Aufwendige Programmerstellung
- Formatierung des Dokuments problematisch, da
generiert
34Active Server Pages (ASP)
- HTML Dokument mit eingebetteten Anweisungen in
VBScript oder JScript - ASP Bestandteil des Internet Information Server
- große Funktionalität durch Mächtigkeit der
Skript-Sprachen (aber geringer als Java/C) - Einbettung von SQL in Skriptsprache (DB-Zugriff
über ODBC und ADOs) - Session Management mit Hilfe von Session-IDs (von
Cookies übertragen) - Zugriff auf Formular- und Umgebungsvariablen
35Ablauf der Verarbeitung mit PL/SQL
- Entwicklungsunterstützung durch WebServer
Developers Toolkit (Menge von Packages) - HTP (HyperText Procedures) HTF (HyperText
Functions) - erleichtern die Generierung von HTML-Tags aus
PL/SQL heraus - OWA_UTIL
- Dienstfunktionen für eine bequemere Generierung
von HTML-Output
36Toolkit - Beispiele
htp.title(My First Page Title)
PL/SQL
HTML
ltTITLEgtMy First Page Titlelt/TITLEgt
titlehtf.title(My First Page Title)
Funktionsauruf
Verschachtelung
htp.center(htf.header(1,My First HTML Header -
Level 1))
ltCENTERltltH1gtMy First HTML Header - Level
1lt/H1gtlt/CENTERgt
37Toolkit - Überblick
- Print-Prozeduren
- Struktur-Tags
- Head-Related Tags
- Body Tags
- List Tags
- Character Format Tags
- Form Tags
- Table Tags
- OWA_UTIL Package
38Beispiel Web Server Developer Kit
CREATE OR REPLACE PROCEDURE home_page AS BEGIN
htp.htmlOpen htp.headOpen htp.title(My
home page) htp.headClose htp.bodyOpen htp.p
rint (This is the home page of user
generated on sysdate
.) htp.bodyClose htp.htmlClose END
39PL/SQL Server Pages (PSP)Grundidee
- Internet-Seiten mit dynamischer Präsentation von
Inhalten durch Einsatz von PL/SQL-Anweisungen - Server-Side Scripting (Generierung der Seiten im
DB-Server - nicht im Webserver) - Basiert auf PL/SQL Web Toolkit
- Bestandteil von Oracle Application Server (OAS)
und Oracle WebDB - Einbindung dynamischer Inhalte durch
PL/SQL-Skripte, durch spezielle Tags
gekennzeichnet
40PSP Beispiel
lt_at_ page language"PL/SQL" gt lt_at_ plsql
procedure"psp_bspseite" gt lt_at_ plsql
parameter"p_name" default"null"gt ltHTMLgt ltHEADgt
ltTITLEgtBeispielseite mit PL/SQL Server
Pagelt/TITLEgt lt/HEADgt ltBODYgt ltH1gtBeispielseite mit
PL/SQL Server Pagelt/H1gt lt -- Inhalt des
Parameters p_name anzeigen, wenn belegt if
not(p_name is null) then gt Hallo
ltp_namegt. ltpgt Client-IP-Adresse
ltowa_util.get_cgi_env('REMOTE_ADDR')gt ltEND
ifgt ltFORM methodPOSTgt Bitte Namen eingeben
ltINPUT type"text" name"p_name"
size"30"gt lt/FORMgt lt/BODYgt lt/HTMLgt
41Schrittfolge PSP
- Kompilieren der PSP-Datei mittels loadpsp
- Erzeugen einer gespeicherten Prozedur in der
Datenbank (Procedure-Tag) - HTML-Anweisungen werden unter Verwendung des
PL/SQL Web-Toolkits in Print-Anweisungen des
HTTP-Pakets umgewandelt - PL/SQL-Anweisungen der Skripteinschübe werden
unverändert übernommen - Komfortablere Entwicklung, da automatische
Übersetzung
42PSP Beispiel Generierter PL/SQL Code
(Gespeicherte Prozedur)
( p_name IN VARCHAR2 default null) AS BEGIN
NULL htp.prn( ltHTMLgt ltHEADgt ltTITLEgtBeispielseite
mit PL/SQL Server Pagelt/TITLEgt lt/HEADgt ltBODYgt ltH1
gtBeispielseite mit PL/SQL Server
Pagelt/H1gt ) -- Inhalt des Parameters p_name
anzeigen, wenn belegt if not(p_name is null)
then htp.prn( Hallo ) htp.prn(p_name) . . .
43Verarbeitung einer PSP
- Weiterleiten der Anfrage vom Browser an den
Modul mod_plsql - Verbindung zur Datenbank, Ausführung der
gespeicherten Prozedur - Erzeugung einer HTML-Seite durch Prozedur
- Zurücksenden des HTML-Dokuments an mod_plsql
- Zurücksenden der HTML-Seiteals HTTP-Response
zumanfragenden Client
44Vorteile von PSP
- Trennung von Anwendungs- und Präsentationslogik
- HTML-Anweisungen und PL/SQL Code separat
- Abgrenzung durch PL/SQL-spezifische Tags
- Leichte Erlernbarkeit
- Einfacher Zugriff auf Daten der Datenbank
- Kein Umweg über HTTP oder JDBC
- Ausführung im Server (PSP selbst in der DB)
- Verbindung mit anderen Skriptsprachen möglich
- z.B. Javascript oder Visual Basic-Script (zur
Prüfung von Benutzereingaben) - nicht kombinierbar mit anderen serverseitigen
Scripting-techniken
45Nachteile von PSP
- Stärkere Beanspruchung des DB-Servers
- Statische Seiten besser im Web-Server speichern
- Plattformabhängigkeit
- Beschränkt auf Oracle
- Migration auf andere DB erfordert Neuentwicklung
der Anwendung
46PHP
- PHP Personal Homepage Tools (war ursprünglich
eine Sammlung von Tools und Makros) - entwickelt von Rasmus Lerdorf 1994, Open Source
Produkt - serverseitige, in HTML eingebettete
Script-Sprache (Ausführung auf dem Webserver) - plattformunabhängig
- unterstützt umfangreiche Menge von
Oracle-Funktionen (erfordert Installation im
Web-Server) - verwandt mit
- Active Server Pages (ASP) von Microsoft
- Java Server Pages (JSP)
- PL/SQL Server Pages (PSP) von Oracle
47PHP
- PHP-Seite als Script-Datei
- Extension .php
- Verarbeitung durch PHP-Prozessor
- Einbettung von Skripteinschüben in spezielle Tags
- lt? echo Hello world! ?gt
- lt?php echo Hello world! ?gt
- ltscript languagephpgt echo Hello
world!lt/scriptgt
48Verarbeitung einer PHP-Seite
49PHP Beispiel
ltHTMLgt ltHEADgt ltTITLEgtTestseite mit
PHPlt/TITLEgt lt/HEADgt ltBODYgt ltH1gtTestseite mit
PHPlt/H1gt lt?php // Lesen des per HTTP-Post
übertragenen Parameters aus Array p_name
_POST'p_name' if (p_name) // Namen
ausgeben, wenn eingegeben. print("Hallo
p_name.ltpgt") // Zugriff auf Umgebungsvariable
print("Client-IP-Adresse "._SERVER'REMOTE_ADDR'
) lt/scriptgt ltFORM method"POST"gt Bitte Namen
eingeben ltINPUT type"text" name"p_name"
size"30"gt lt/FORMgt lt/BODYgt lt/HTMLgt
50Java und Datenbanken
- Java Database Connectivity (JDBC)
- Idee
- Drivertypen
- Klassen und Schnittstellen
- SQLJ (Embedded SQL in Java)
- J2EE Anwendungen
- Java Servlets
- Java Server Pages
51Java Database Connectivity (JDBC)
- Motivation
- Zugriff auf SQL-Datenbanken mit Java benötigt
- Nachteil selbstgestrickter Java-Zugriffsmethoden
- aufwendig
- fehlerbehaftet
- nicht einfach portierbar
- Überwindung des Mismatch zwischen
- Java (objektorientiert, ohne Pointer)
- C (prozedural, mit Pointern)
- SQL (mengenorientiert)
- Beziehung zu ODBC
- Wurde in Anlehnung an ODBC (Open Database
Connectivity) entwickelt und mit einer ähnlichen
Klassenbibliothek ausgestattet
52JDBC (Forts.)
- DB-Kommunikation erfolgt über ein Call Level
Interface (CLI) - Basiert auf Java kann Objekte direkt verwenden,
um DB-Objekte und ihre Operationen direkt und
natürlich darzustellen - Beispiel Objekt Connection mit einer Methode
close() - JDBC-Klassenbibliothek
- Seit JDK 1.1 im Sprachumfang enthalten, wird
ständig um weitere Funktionalität ergänzt - Trennung in ein Core API und Standard
Extension API
53JDBC Entwurfsziele
- Call-Level Dynamic SQL API
- Äquivalent zu ODBC und X/Open CLI
- Allgemeines API, das die Basis-SQL-Funktionalität
unterstützt - Höhere APIs (z.B. mit Mapping Klassen-Tabellen)
können darauf aufsetzen - Implementierbar on top of allgemeinen SQL-APIs
- Implementierbar auf Basis von ODBC und X/Open CLI
- Brückentreiber JDBC-ODBC somit leicht
realisierbar - SQL Conformance
- Jeder SQL-Dialekt verarbeitbar, falls ein
JDBC-Driver dafür vorhanden ist - Mindest-Anforderung SQL-92 (Entry Level) muß von
allen Drivern unterstützt werden - Strenges, statisches Typing
- Einfaches API für den Normalfall (80-20 Regel)
54JDBC-Architektur
Application Driver Manager Driver
Driver Driver Data source Data
source Data source
JDBC API
JDBC Driver API
Proprietär
55JDBC Klassen und Interfaces
java.sql.DriverManager(class, class methods)
java.sql.Driver(interface, drivers only)
java.sql.Connection(interface)
java.sql.Connection(interface)
java.sql.Statement(interface)
java.sql.Statement(interface)
java.sql.Statement(interface)
java.sql.Resultset(interface)
java.sql.Resultset(interface)
56Überblick Datenbankanfragen mit JDBC
Datenbankverbindung herstellen
Connect
Datenbankanfrage
Query
Processresults
Ergebnisse verarbeiten
Verbindung zur DB schließen
Close
57Phase 1 Connect
Connect
Driver registrieren
Verbindung zur Datenbank
Query
Processresults
Close
58Phase 2 Query
Connect
Query
Erzeuge ein Statement
Abfrage auf Datenbank
Processresults
Close
59Statement Object
- Ein Statement Objekt sendet SQL-Befehl zur
Datenbank. - Man benötigt aktive Connection, um JDBC
Statement zu erzeugen. - Statement hat drei Methoden, um ein SQL Statement
zu erzeugen - executeQuery()für QUERY Statements
- executeUpdate()für INSERT, UPDATE, DELETE, oder
DDL statements - execute() für beliebiges Statement
60Phase 3 Verarbeiten der Ergebnisse
Connect
Query
Durchlaufen der Ergebnisse
Zuweisen der Ergebnisse an Java- Variablen
ProcessResults
Close
61Das ResultSet Objekt
- JDBC liefert die Ergebnisse einer Query in einem
ResultSet Objekt. - Ein ResultSet verwaltet einen Cursor, der auf den
aktuellen Datensatz zeigt. - Verwende next() zum Durchlaufen des Result Set
Satz für Satz. - getString(), getInt(), usw. für Wertzuweisung an
Java-Variablen.
62Phase 4 Close
Connect
Query
Schließe Result Set
ProcessResults
Schließe Statement
Close
Schließe Connection
63JDBC Beispiel SELECT
// Create a connection and connect Connection
conn Statement stmt ResultSet rs int
partID float price conn
DriverManager.getConnection("jdbcodbcSales",
"myname",
"mypassword") // Create a statement and execute
a SELECT statement stmt conn.createStatement()
rs stmt.executeQuery ("SELECT PartID,
Price FROM Parts")
64JDBC Beispiel SELECT (Forts.)
// Fetch and print each row while (rs.next())
partID rs.getInt(1) price
rs.getFloat(2) System.out.println("Part
Number " partID "
Price " price) // Close the result
set rs.close() // Close the statement and
connection stmt.close() conn.close()
65JDBC Beispiel UPDATE
// Create a connection and connect Connection
conn Statement stmt int rowCount conn
DriverManager.getConnection("jdbcodbcSales",
"myname",
"mypassword") conn.setAutoCommit(false) //
Create a statement and execute an UPDATE
statement stmt conn.createStatement() rowCo
unt stmt.executeUpdate ("UPDATE Parts SET
Price 10.0 WHERE PartID 123")
66JDBC Beispiel UPDATE (Forts.)
// Check if row was changed if (rowCount ! 0)
System.out.println("Price changed") else
System.out.println("Part not found") //
Commit the transaction conn.commit() // Close
the statement and connection stmt.close() conn.cl
ose()
67J2EE Anwendungen
- J2EE Java 2 Platform Enterprise Edition
- Standard für die Entwicklung mehrschichtiger,
komponentenbasierter Java-Anwendungen - Vereinfacht Entwicklung durch Definition eines
Programmiermodells auf Basis von
standar-disierten und komponentenbasierten
Objekten - Oracle Application Server Oracle10gAS (OC4J)
- vollständige Umsetzung eines J2EE-Containers
JSP, Java Servlets, EJB, JDBC
68Java Servlets
- Einordnung
- kleine Serverprogramme
- Voraussetzung
- Integration einer JVM in den Web-Server bzw.
Kooperation mit einem Zusatzprozess - Voller Zugriff auf Java-API
- Vorteile
- Plattform- und herstellerunabhängige Erweiterung
von Web-Servern möglich (durch standardisierte
Servlet-API) - Dynamisches Binden möglich (Java-Klassenlader)
- Hinzufügen und Entfernen von Modulen ohne
Neustart des Servers
69Web/DB-Anbindung über Java Servlets
- Weitere Vorteile
- alle Möglichkeiten der Sprache Java
Web-Client
Web-Server
HTTP
J V M
Servlet-Engine
- gleiches Sicherheitskonzept wie Java (Security
Manager),verhindert Ressourcenmißbrauch - Leistung bleiben im Speicher des Servers,
DB-Verbindung nur einmal nötig - Lastverteilung Aufruf anderer Servlets möglich
- mehr Programmieraufwand, Ent-wicklungsumgebungen
verfügbar
Java-Klassenbibliothek
JDBC
DB-Server