Oracle und Java

Werbung
© 2008 AGI-Information Management Consultants
May be used for personal purporses only or by
libraries associated to dandelon.com network.
Oracle und Java
Datenbankentwicklung für
E-Commerce-Anwendungen
Elio Bonazzf
Glenn Stokol
Deutsche Übersetz
G&U Technische'
Dokumentation
iew technolo
:+Technik
Inhaltsverzeichnis
Einführung und Überblick
Der Aufbau dieses Buchs
Herunterladen von Oracle-Software
Die Listings dieses Buches
Anmerkung zu den Oracle-Versionen
Kapitel 1
Einführung in das objektrelationale Datenbankdesign
und die Architektur von Oracle
1.1
1.1.1
1.1.2
1.1.3
1.2
1.3
1.4
1.5
1.6
1.7
1.7.1
1.7.2
1.7.3
1.8
1.8.1
1.9
1.9.1
1.9.2
1.9.3
1.9.4
Das relationale Modell und das Design für eine
Online-Buchhandlung
Die Notation für Entitäten
Die Notation für Attribute
Die Notation für Beziehungen
Die Bedeutung von Datenbankmodell und-design
Die Transformation eines ERD in ein Tabellendesign
Transformation von über- und untergeordneten Entitätstypen
Das allgemeine Design von untergeordneten Typen
Tabellen-und Systemdesign
Das Objektmodell und das Design für die Buchhandlung
Die Notation für Klassen
Die Notation für Verknüpfungen:
Assoziationen und Aggregationen
Die Notation für Vererbungshierarchien
Abbilden eines Klassenmodells auf eine Oracle-Datenbank
Die Objekttypen, Objekttabellen und Objektsichten von Oracle
Regeln für die Abbildung eines Objektmodells auf
eine relationale Implementierung
Objektbezeichner und eindeutige Bezeichner im Vergleich
Abbilden von Attributen auf Spalten
Abbilden von Klassen auf Tabellen
Abbilden von Vererbungshierarchien
17
18
20
20
20
21
22
23
24
24
27
28
29
32
33
34
36
37
39
40
40
43
43
44
44
48
Inhaltsverzeichnis
1.9.5
1.9.6
1.9.7
1.9.8
1.10
Kapitel 2
Abbilden von Assoziationen
Abbilden von Aggregationen
Abbilden des Klassenmodells auf relationale Oracle-Tabellen
Abbilden des Klassenmodells auf Objekttabellen von Oracle
Zusammenfassung
DDL-Anweisungen
2.1
2.2
2.3
2.4
2.5
2.6
2.6.1
2.6.2
2.7
2.7.1
2.7.2
2.8
2.8.1
2.8.2
2.8.3
2.9
2.9.1
2.9.2
2.9.3
2.10
2.11
2.11.1
2.11.2
2.11.3
2.11.4
2.11.5
2.12
2.12.1
2.12.2
2.12.3
Überblick über die Anweisungen von SQL
Eine kurze Einführung in Oracle SQL*Plus
Die allgemeine Syntax der DDL
Namensregeln für Datenbankstrukturen in Oracle
Integrierte Datentypen von Oracle8
Relationale Tabellen
Erstellen einer Tabelle
Datenbankeinschränkungen und Integritätsregeln
Eine alternative Syntax für die Anweisung CREATE TABLE
Verändern einer Tabellenstruktur
Entfernen einer Tabelle und ihrer Daten
Relationale Sichten
Erstellen einer Sicht
Verändern einer Sicht
Löschen einer Sicht
Sequenzen
Erstellen einer Sequenz
Verändern einer Sequenz
Löschen einer Sequenz
Synonyme
Objekttypen
Erstellen eines Objekttyps
MAP und ORDER
Verwenden von Objekttypen
Verändern von Objekttypen
Löschen von Objekttypen
Objekttabellen
Erstellen von Objekttabellen
Verändern von Objekttabellen
Löschen von Objekttabellen
51
57
58
60
64
65
66
68
71
71
71
72
73
74
77
78
82
83
83
84
84
85
85
86
86
86
88
89
97
100
101
101
103
103
106
107
Inhaltsverzeichnis
2.13
2.13.1
2.13.2
2.13.3
2.13.4
2.13.5
2.13.6
2.14
2.14.1
2.14.2
2.14.3
2.15
Kapitel 3
Objektsichten
Auswählen von Objektbezeichnern
Erstellen von Objektsichten
Ein Beispiel für eine Objektsicht
Verändern von Objektsichten
Löschen von Objektsichten
Erstellen von Collections
Sicherheit: Anweisungen für die Zugriffssteuerung
Die Anweisung GRANT für Systemberechtigungen
Die Anweisung REVOKE für Systemberechtigungen
Objektberechtigungen
Zusammenfassung
108
108
109
109
112
113
113
116
117
118
118
120
Abfrageverarbeitung
121
3.1
3.1 .1
3.1 .2
3.2
3.2 .1
3.3
122
123
124
129
130
3.3 .1
3.3 .2
3.3 .3
3.3 .4
3.3 .5
3.3 .6
3.3 .7
3.4
3.4 .1
3.5
3.6
3.7
3.8
3.9
3.9 .1
3.9 .2
SELECT-Anweisungen
Aliase für Spalten
Berechnungen in SQL-Ausdrücken
Zeilenbasierte Funktionen
Die Konvertierungsfunktion TO_CHAR
Die Klausel WHERE zur Einschränkung der
abzurufenden Zeilen
Bedingte Abfrageausdrücke
Negative Bedingungen
Der Operator für den Listenvergleich
Der Operator für den Bereichsvergleich
Der Operator für den Mustervergleich
Der Umgang mit NULL-Weiten
Kombinieren mehrerer Bedingungen
Operationen zur Verknüpfung von Tabellen
Die äußere Verknüpfung
Die Klausel ORDER BY
Aggregatfunktionen
Die Klausel GROUP BY
Die Klausel HAVING
Unterabfragen
Regeln für die Verwendung von Unterabfragen
Arten von Unterabfragen
133
133
134
134
135
135
137
138
139
140
143
145
147
151
152
153
156
Inhaltsverzeichnis
3.10
3.10.1
3.10.2
3.10.3
3.10.4
3.11
Kapitel 4
Kapitel 5
Abfragen von Objektstrukturen
158
Abfragen von Objekttabellen und -spalten
158
Nützliche Funktionen für die Objektinstanzen in Objekttabellen 160
Abfragen von Werten verschachtelter Objektinstanzen
163
Abfragen von Collections
165
Zusammenfassung
169
DML-Anweisungen und Transaktionen
171
4.1
4.1.1
4.1.2
4.1.3
4.1.4
4.2
4.2.1
4.2.2
4.2.3
4.2.4
4.3
4.3.1
4.3.2
4.3.3
4.4
4.5
4.5.1
4.6
172
172
177
180
181
183
183
186
188
188
192
194
196
198
199
201
202
208
DML-Anweisungen für relationale Tabellen
Die Anweisung INSERT
Die Anweisung UPDATE
Die Anweisung DELETE
Unterabfragen in DML-Anweisungen
DML-Anweisungen für Objekttabellen
Einfügen von Objektinstanzen
Aktualisieren der Attribute von Objektinstanzen
Löschen von Objektinstanzen
DML-Anweisungen mit Objektverweisen
DML-Anweisungen für Collection-Objekte
Einfügen von Daten in eine Collection
Aktualisieren einer Collection
Löschen von Daten aus einer Collection
Optimierung der Geschwindigkeit von DML-Anweisungen
Transaktionen in Oracle SQL
Steuerung und Grenzen von Transaktionen
Zusammenfassung
Architektur und Optimierung von Oracle
209
5.1
5.1.1
5.1.2
5.1.3
5.1.4
5.2
5.2.1
5.2.2
210
213
217
221
222
223
224
226
Elemente der Architektur
Die Oracle-SGA und die Prozesse/Threads im Hintergrund
Der Lebenszyklus von Transaktionen
Bestandteile der Oracle-SGA
SQL-Anweisungen und Bindungsvariablen
Leistungsoptimierung
Effiziente SQL-Anweisungen
Die Abfrageoptimierer von Oracle
Inhaltsverzeichnis
5.2.3
5.2.4
5.3
Kapitel 6
228
239
245
Das Internet und Oracle: Sicherheitsaspekte
247
6.1
6.2
6.3
6.4
248
252
255
6.5
6.6
Kapitel 7
Die Analyse von SQL-Anweisungen
Durchsuchen des Shared Pool
Zusammenfassung
Netzwerk-Firewalls
Die Sicherheit von Oracle
Die entmilitarisierte Zone
Verwenden der Sicherheitsfunktionen und
Synonyme von Oracle
Neue Sicherheitsfunktionen von Oracle
Zusammenfassung
257
263
266
Einführung in PL/SQL
267
7.1
7.1.1
7.1.2
7.2
7.2.1
7.2.2
7.2.3
7.2.4
7.2.5
7.2.6
7.2.7
7.3
7.3.1
7.3.2
7.4
7.4.1
7.4.2
7.5
7.5.1
7.5.2
7.6
7.6.1
7.6.2
269
269
272
273
274
275
276
278
280
282
285
288
288
292
296
296
298
302
303
304
308
308
309
Anonyme Blöcke
Die Blockstruktur von PL/SQL
Ausführen von PL/SQL-Blöcken
Variablen und Datentypen von PL/SQL
Definitionen von Untertypen
Einwertige Datentypen
LOB-Datentypen
Zusammengesetzte Datentypen
Ableiten von PL/SQL-Datentypen aus der Datenbank
Verweisdatentypen
Literale
Bedingte und sequenzielle Steuerelemente
IF-Anweisungen
Schleifen
Verwenden von SQL-Anweisungen in PL/SQL
Verwenden von SELECT-Anweisungen in PL/SQL
DML-Anweisungen in PL/SQL
Cursor
Implizite Cursor
Explizite Cursor
Tabellen und variable Arrays in PL/SQL
Verschachtelte Tabellen
Index-By-Tabellen
10
Inhaltsverzeichnis
7.6.3
7.6.4
7.7
7.8
Kapitel 8
Variable Arrays
Vorteile von verschachtelten Tabellen und variablen Arrays
Benutzerdefinierte Typen und Objekttypen in PL/SQL
Zusammenfassung
313
315
319
321
Prozeduren, Funktionen, Pakete und Ausnahmen von PL/SQL
323
8.1
8.1.1
8.1.2
8.1.3
8.1.4
8.1.5
324
325
325
326
327
8.1.6
8.1.7
8.1.8
8.2
8.2.1
8.2.2
8.2.3
8.2.4
8.2.5
8.3
8.3.1
8.3.2
8.3.3
8.4
8.4.1
8.4.2
8.4.3
8.4.4
8.5
8.5.1
8.6
8.6.1
8.7
8.7.1
Gespeicherte Prozeduren und Funktionen
Erstellen einer Prozedur
Aufrufen einer Prozedur
Erstellen einer Funktion
Aufrufen einer Funktion
Ausführen von PL/SQL-Code mit Definer- oder
Invoker-Rechten
Ersetzen einer Prozedur oder Funktion
Angeben von Argumenten
Übergeben von Parametern an Prozeduren und Funktionen
PL/SQL-Pakete
Die Paketspezifikation
Der Paketrumpf
Aufrufen einer Prozedur oder Funktion in einem Paket
Überladen von Prozeduren und Funktionen
Erweitern von SQL mithilfe von Paketfunktionen
Objekttypen in PL/SQL
Deklarieren von Objektvariablen in PL/SQL
Erstellen von Objekttypinstanzen in PL/SQL
Attribute und Methoden von SQL-Objekten in PL/SQL
Die Behandlung von Ausnahmen in PL/SQL
Auffangen von Ausnahmen
Vordefinierte Ausnahmen
Benutzerdefinierte Ausnahmen
Allgemeine Vorgehensweise zum Auffangen
sämtlicher Ausnahmen
Transaktionen in PL/SQL
Autonome Transaktionen
Java und PL/SQL im Vergleich
Das Zusammenspiel von PL/SQL und Java
Überlegungen zur Leistung
Partitionieren von Client/Server-Anwendungen
328
329
330
335
340
340
341
343
344
354
356
356
358
361
371
371
374
374
378
381
382
384
384
385
385
Inhaltsverzeichnis
8.7.2
8.7.3
8.8
Kapitel 9
Kapitel 10
11
Minimieren von Netzwerkzugriffen
Optimieren des Datenzugriffscodes
Zusammenfassung
386
386
390
Datenbankzugriff mit JDBC
391
9.1
Einführung in die Architektur von JDBC
9.2
Der Treibermanager und die JDBC-Treiber
9.2.1
Typen von JDBC-Treibern
9.2.2 Die JDBC-Treiber von Oracle
9.2.3
Der JDBC-Treibermanager
9.2.4 Laden eines JDBC-Treibers
9.3
Überblick über die Schnittstellen und Klassen von JDBC
9.4
Verwenden von JDBC-Objekten
9.4.1
Herstellen einer Verbindung mit der Datenbank
9.4.2 Ausführen von SQL-An Weisungen
9.4.3 JDBC und Transaktionen
9.4.4 Verwenden von JDBC in Applets
9.5
Zusammenfassung
393
394
395
395
398
399
400
401
402
409
446
446
449
Erweiterter Datenbankzugriff mit JDBC
451
10.1
10.1.1
10. .2
10. .3
10. .4
10. .5
10. .6
10. .7
10.1.8
10.1.9
10.2
10.2.1
10.2.2
10.2.3
10.2.4
10.3
452
453
454
458
463
505
505
506
517
537
542
542
543
546
556
561
Erweiterungen der JDBC-Treiber von Oracle
Verwenden der JDBC-Treibererweiterungen
Vorausschauendes Lesen von Zeilen
Durchführen von Stapelaktualisierungen
Streaming-Datentypen
Verwenden von ROWID
Aufrufen von anonymen PL/SQL-Blöcken
Lesen und Schreiben von Java-Objekten
Lesen und Schreiben von Oracle-Objekttypen
Lesen und Schreiben von Collections
Unterstützung für das Optional Package JDBC 2.0
Scrollbare Resultsets
Die JDBC-2.0-Datenquelle
Verbindungen mithilfe des JNDI
Das Verbindungs-Pooling von JDBC 2.0
Zusammenfassung
12
Kapitel 11
Inhaltsverzeichnis
Datenzugriff mit SQLJ: Einbetten von SQL in Java
563
11.1
11.1.1
11.1.2
11.1.3
11.1.4
11.2
11.2.1
11.2.2
11.2.3
11.3
11.3.1
11.3.2
11.3.3
11.4
11.4.1
11.4.2
11.5
11.5.1
11.5.2
11.5.3
11.6
11.6.1
11.6.2
11.6.3
11.6.4
11.6.5
11.6.6
11.6.7
11.6.8
11.6.9
564
565
566
567
571
571
571
574
578
580
582
584
587
604
604
611
625
626
628
630
636
637
638
639
640
641
641
642
643
Ein Überblick über SQLJ
Die Komponenten von SQLJ
Anlegen einer SQLJ-Datei
Übersetzen der SQLJ-Datei
Ausführen der SQLJ-Datei
Herstellen einer Verbindung zu einer Datenbank in SQLJ
Festlegen des standardmäßigen Verbindungskontexts
Erstellen und Verwenden weiterer Verbindungskontexte
Ausführungskontexte
Ausführen von SQL-Anweisungen mithilfe von SQLJ
Verwenden von Hostvariablen
DML- und DDL-Anweisungen in SQLJ
Abfrage Verarbeitung
Verarbeiten der SQL-Objekttypen von Oracle
Oracle JPublisher
Verwenden der von JPublisher generierten Klassen
Verarbeiten von SQL-Collections
Erstellen von SQL-Collections und -Tabellen
Erstellen von Java-Klassen für SQL-Collections
Zugriff auf SQL-Collections aus Java heraus
Verwalten von LOB-Datentypen
Lesen aus einer LONG-Spalte
Schreiben in eine LONG-Spalte
Lesen aus einer LONG RAW-Spalte
Schreiben in eine LONG RAW-Spalte
Lesen aus einer CLOB-Spalte
Schreiben in eine CLOB-Spalte
Lesen aus einer BLOB-Spalte
Schreiben in eine BLOB-Spalte
Lesen aus einer LONG-Spalte mit einem
UnicodeStream-Objekt
11.6.10 Schreiben in eine LONG-Spalte mit einem
UnicodeStream-Objekt
11.6.11 Lesen eines BFILE-Objekts
11.6.12 Schreiben eines BFILE-Objekts
644
645
646
646
Inhaltsverzeichnis
Kapitell 2
Kapitel 13
13
11.7
Ausführen von gespeicherten Prozeduren und Funktionen
11.7.1 Aufrufen einer gespeicherten Prozedur
11.7.2 Aufrufen einer gespeicherten Funktion
11.7.3 Argumente von gespeicherten Prozeduren und Funktionen
11.8
Zusammenfassung
647
647
647
648
648
Gespeicherte Java-Prozeduren in Oracle
651
12.1
Ausführen von Java-Code im Kernel von Oracle
12.1.1 Vorteile
12.1.2 Grenzen
12.2
Drei Schritte zur Entwicklung und zur Weitergabe
von gespeicherten Prozeduren
12.2.1 Entwickeln von gespeicherten Prozeduren in Java
12.2.2 Laden von Java-Bytecode in Oracle
12.2.3 Veröffentlichen der Java-Klassen in der Datenbank
12.2.4 Automatische Weitergabe mit JDeveloper
12.3
Interaktion zwischen Java und PL/SQL
12.3.1 Aufrufen von PL/SQL aus Java heraus
12.3.2 Aufrufen von Java aus PL/SQL heraus
12.3.3 Der Zugriff auf Resultsets
12.4
PL/SQL und Java: Welches ist das richtige Werkzeug
für Ihre Aufgaben?
12.5
Zusammenfassung
652
653
653
654
655
663
667
674
679
679
682
682
684
689
Datenzugriff mithilfe von Java-Servlets und Verbindungs-Pooling
691
13.1
13.2
13.3
13.3.1
13.3.2
13.3.3
13.4
13.5
13.5.1
13.5.2
13.6
694
695
697
698
708
728
749
750
753
757
759
Mehrere Threads, Sitzungszustand und Sicherheit
Verbindungs-Pooling
Ein Beispiel-Servlet
Entwurf der Datenbank
Verbindungs-Pooling in Java
Die zentralen Servlet-Methoden
Vor- und Nachteile von BookServlet
Ausführen der Anwendung BookServlet
Konfigurieren von Netscape iPlanet
Konfigurieren von Apache und JServ
Zusammenfassung
14
Kapitel 14
Inhaltsverzeichnis
Java Server Pages und Active Server Pages
761
14.1
14.1.1
14.1.2
14.1.3
762
762
763
14.1.4
14.1.5
14.2
14.2.1
14.2.2
14.3
14.4
14.4.1
14.4.2
14.4.3
14.5
Kapitel 15
Kapitel 16
JSP im Überblick
JSP-Elemente
JSP-Tags
Fortgeschrittene JSP-Routinen: Bean-Gültigkeitsbereiche, das
Einbinden von Dateien, Umleitung und Tag-Erweiterungen
Ein JSP-Beispiel
Die JDeveloper-Unterstützung für JSP
ASP im Überblick
ASP-Elemente
Ein ASP-Beispiel
JSP und ASP im Vergleich
Die Neuerstellung von BookServlet mit JSP
Verbindungs-Caching
Java-Beans und Java Server Pages
Das Servlet Servelmage
Zusammenfassung
770
774
785
786
789
791
796
798
798
802
807
812
Zugriff auf Oracle Advanced Queuing mithilfe von Java
813
15.1
15.2
15.3
15.3.1
15.3.2
15.3.3
15.4
814
816
821
824
828
833
843
Warteschlangen für Anwendungen
Oracle Advanced Queuing
Beispiele für Advanced Queuing
Handhaben von Nachrichten mit PL/SQL-Wrappern
Handhaben von Nachrichten mit der nativen Java-Schnittstelle
Handhaben von Nachrichten mit der JMS-Schnittstelle
Zusammenfassung
Enterprise JavaBeans: eine Einführung
845
16.1
16.1.1
16.1.2
16.2
16.2.1
16.2.2
16.2.3
16.2.4
16.2.5
847
847
849
850
850
853
854
855
857
Umgebung und Struktur von EJBs
Die Enterprise-JavaBean-Umgebung
Die Struktur einer Enterprise JavaBean
Erstellen einer Enterprise JavaBean
Die Bean-Klasse
Die Home-Schnittstelle
Die Remote-Schnittstelle
Weitere Klassen
Der Lebenszyklus einer Session-Bean
Inhaltsverzeichnis
16.3
16.3.1
16.3.2
16.3.3
16.3.4
16.3.5
16.4
16.4.1
16.4.2
16.5
16.5.1
16.5.2
16.6
Kapitel 17
IS
Erstellen einer EJB-Clientanwendung
Entwickeln des Clientcodes
Schritt 1 und 2: Suchen des Home-Objekts
Schritt 3: Erstellen einer Bean-Instanz mithilfe
des Home-Objekts
Schritt 4: Aufrufen von Bean-Methoden
Schritt 5: Entfernen der EJB und Freigeben von Ressourcen
Erstellen einer EJB und eines Clients mit JDeveloper
Erstellen der Klassen der Enterprise JavaBean
Erstellen des Clients mit JDeveloper
Ausführen der Enterprise JavaBean
Die Installation einer Enterprise JavaBean in Oracle8«
Ausführen des Clients der Enterprise JavaBean
Zusammenfassung
Weitergabe und Verwendung einer Enterprise JavaBean
17.1
17.1.1
17.1.2
17.1.3
17.2
17.2.1
17.2.2
17.2.3
17.3
17.4
17.4.1
17.4.2
17.4.3
17.4.4
17.4.5
17.4.6
17.4.7
17.4.8
Vorbereitungen für die Ausführung der EJB-Dienste
von Oracle8/
Installieren von Oracle JServer
Einrichten der IIOP-Dienste
Speicherverwaltung auf dem Datenbankserver
Weitergabe einer EJB mit Befehlszeilenprogrammen
Kompilieren des EJB-Codes und Anlegen einer
JAR-Datei von EJB
Erstellen eines Deployment-Deskriptors
Ausführen des Dienstprogramms deployejb
Ausführen der Clientanwendung nach der Weitergabe
Einrichten von Enterprise JavaBeans für den Umgang mit
Transaktionen
Verwenden von JDBC in EJB-Methoden
Verwenden von SQLJ in EJB-Methoden
Der Transaktionsdienst und verteilte Transaktionen
Festlegen des Wertes für TransactionAttribute
Anwendungsszenarien für EJB-Transaktionen
Clientgesteuerte EJB-Transaktionen
Containergesteuerte Persistenz
Containergesteuerte Transaktionen
859
859
860
863
865
866
866
866
871
872
876
876
878
879
881
881
882
886
888
889
892
895
898
900
901
902
903
909
910
912
917
918
Inhaltsverzeichnis
16
17.4.9
17.4.10
17.5
17.6
17.6.1
17.6.2
17.6.3
17.6.4
17.7
17.8
17.9
Beangesteuerte Persistenz
Beangesteuerte Transaktionen
Beschränkungen und Grenzen von Oracle8i-EJBs
Die EJB-Sicherheit in Oracle8*
Steuern des Zugriffs auf veröffentlichte Namen
Steuern des Zugriffs auf EJB-Methoden
Gewähren der Execute-Berechtigung für EJB-Klassen
Gewähren des Zugriffs auf die von der EJB verwendeten
Datenbankobjekte
Entfernen einer EJB vom Oracle8/-Server
Installieren einer Enterprise JavaBean im
Oracle Application Server
Zusammenfassung
Stichwortverzeichnis
933
934
938
939
940
942
944
945
946
947
950
951
Herunterladen