Acrobat Distiller, Job 4

Werbung
SQLJ
Basics
Universität Stuttgart – Abteilung Anwendersoftware
01.07.2002
Was ist SQLJ?
SQLJ Part 0:
- Steht für Embedded SQL in Java
SQLJ Part 1:
- Java-Methoden als SQL Stored-Procedures
SQLJ Part 2:
- Java Klassen als echte SQL-Datentypen
Universität Stuttgart – Abteilung Anwendersoftware – Marcel Keller
4/38
1
Was ist SQLJ? (2)
Entstanden durch den Zusammenschluss
führender Datenbankhersteller wie:
Oracle, Sybase, SUN, IBM, Informix, Micro
Focus, Microsoft, XDB, Cloudscape und
Compaq/Tandem, sowie JavaSoft.
Universität Stuttgart – Abteilung Anwendersoftware – Marcel Keller
5/38
Grundlagen
Entspricht Richtlinien des ANSI/ISO
„Embedded SQL“ Standard
Aufbau eines SQLJ-Statement im JavaCode:
#sql {SELECT * FROM bsp_tabelle};
Source-Datei hat die Endung „*.sqlj“
Universität Stuttgart – Abteilung Anwendersoftware – Marcel Keller
7/38
2
Abgrenzung zu JDBC
// SQLJ
int n;
#sql { INSERT INTO Gehalt VALUES (:n)};
// JDBC
int n;
Statement stmt = conn.prepareStatement(„INSERT INTO Gehalt VALUES (?)“);
stmt.setInt(1,n);
stmt.execute();
stmt.close();
Universität Stuttgart – Abteilung Anwendersoftware – Marcel Keller
8/38
SQLJ Pre-Compiler
Übersetzungsvorgang des Pre-Compiler:
Universität Stuttgart – Abteilung Anwendersoftware – Marcel Keller
9/38
3
Datentypen
Abbildung der Datentypen:
Universität Stuttgart – Abteilung Anwendersoftware – Marcel Keller
10/38
Host-Variablen und Host-Ausdrücke
Variablen oder beliebige Java Ausdrücke
Voraussetzung Datentypen sind
äquivalent
Syntax:
- „:variable1“ oder
- „:(variable1 + variable2)“
Richtungen der Datenüberübertragung
- IN
- OUT und
- INOUT
Universität Stuttgart – Abteilung Anwendersoftware – Marcel Keller
11/38
4
Iteratoren
Host-Variablen erlauben nur Austausch
von einfachen Datenelementen.
Für Ergebnismengen benötigt man
Iteratoren
Es wird unterschieden zwischen
- Benannten Iteratoren und
- Positions-Iteratoren
Universität Stuttgart – Abteilung Anwendersoftware – Marcel Keller
12/38
Benannte Iteratoren
Name einer Spalte wird Attributname in
SQL-Statement zugeordnet
Namen müssen identisch sein, sonst ist
keine Zuordnung möglich
Universität Stuttgart – Abteilung Anwendersoftware – Marcel Keller
13/38
5
Beispiel: Benannte Iteratoren
#sql public iterator Person_Iterator(int pid, String name, String forename);
public void showAllStoredPersons() {
Person_Iterator listOfPersons;
#sql listOfPersons = { SELECT pid, name, forename FROM person };
while (listOfPersons.next()) {
System.out.println("("+listOfPersons.pid()+", "+listOfPersons.name()+",
"+listOfPersons.forename()+")");
}
listOfPersons.close();
}
Universität Stuttgart – Abteilung Anwendersoftware – Marcel Keller
14/38
Positions-Iteratoren
Definition legt nur Datentypen fest, nicht
die Namen
Reihenfolge der Datentypen muss mit der
Spaltenreihenfolge in der SQL-Anfrage
übereinstimmen
Universität Stuttgart – Abteilung Anwendersoftware – Marcel Keller
15/38
6
Beispiel: Positions-Iteratoren
#sql public iterator listOfPerson(int, String, String);
public void showAllStoredPersons() {
Person listOfPersons;
int pid; String surname; String forename;
#sql listOfPersons = { SELECT pid, surname, forename FROM person };
while (!listOfPersons.endFetch()) {
#sql { FETCH :listOfPersons INTO :pid, :surname, :forename };
System.out.println("("+pid+", "+surname+", "+forename+")");
}
listOfPersons.close();
}
Universität Stuttgart – Abteilung Anwendersoftware – Marcel Keller
16/38
Verbindungskontext
Wie wird zugegriffen
Auf welche Datenbank wird verbunden
Identisch zu JDBC
Für jedes SQLJ-Statement kann ein
eigener Verbindungskontext erstellt
werden
Wenn nichts explizit angegeben ist wird
die Default-Verbindung verwendet
Universität Stuttgart – Abteilung Anwendersoftware – Marcel Keller
17/38
7
Ausführungskontext
Zu jedem Verbindungskontext gehört
mindestens ein Ausführungskontext
Der Ausführungskontext ermöglicht die
Abfrage von:
- Warnungen
- Fehler
- Statusmeldungen
Universität Stuttgart – Abteilung Anwendersoftware – Marcel Keller
18/38
Multithreading
Zwei Möglichkeiten:
- Für jeden Thread wird ein eigener
Verbindungskontext erstellt.
- Für jeden Thread wird ein eigener
Ausführungskontext erstellt.
Universität Stuttgart – Abteilung Anwendersoftware – Marcel Keller
19/38
8
Aufruf von Stored-Procedures
Stored-Procedures laufen lokal auf einem
Datenbanksystem
Sie werden mit dem Befehl „CALL“
aufgerufen.
Beispiel:
#sql {CALL bsp_prozedur (:variable1)};
Universität Stuttgart – Abteilung Anwendersoftware – Marcel Keller
20/38
Aufruf von Stored-Procedures (2)
Zuweisung eines Rückgabewertes mit dem
Befehl „VALUES“.
Beispiel:
int x;
#sql x = {VALUES (bsp_funktion(2002))};
Universität Stuttgart – Abteilung Anwendersoftware – Marcel Keller
21/38
9
Transaktionsverwaltung
Es wird unterschieden zwischen manueller
und automatischer Transaktionsverwaltung.
Wird über den Parameter „AutoCommit“ im
Verbindungskontext definiert.
Universität Stuttgart – Abteilung Anwendersoftware – Marcel Keller
22/38
SQLJ - JDBC
Vorteile SQLJ:
- Übersichtlicher Code
- Fehler wird nicht erst zur Laufzeit gefunden
Nachteile SQLJ:
- Grosse Laufzeitbibliothek (ca. 200-500 KByte)
- Nur statische SQL-Statements
Universität Stuttgart – Abteilung Anwendersoftware – Marcel Keller
36/38
10
Fazit
Mit SQLJ werden die Nachteile von JDBC
entschärft
SQLJ aber keinesfalls vollständiger Ersatz
für JDBC, sondern Ergänzung
Universität Stuttgart – Abteilung Anwendersoftware – Marcel Keller
37/38
Ausblick
SQLJ verbessert die Datenbankanbindung
mit Java und schafft daher eine gute
Grundlage für viele Business
Applikationen, die heute und in der
Zukunft eine signifikante Rolle im IT-Markt
ausmachen.
Universität Stuttgart – Abteilung Anwendersoftware – Marcel Keller
38/38
11
Herunterladen