Ueb18 - oth

Werbung
Datenbanken
18. Übung
JPublisher und Java Stored Procedures
JPublisher
Oracle bietet über den Java Object Type Publisher (JPublisher) einen sehr konfortablen Weg,
um Objekte und Pakete aus einer Datenbank in Java-Klassen umzuwandeln. Dabei müssen diese
Objekte als benutzerdefinierter Typ in der Datenbank erstellte werden.
Typen in Oracle. Ein benutzerdefinierter Typ studentenTyp wird angelegt
Typen mit JPublisher in Java-Objekte konvertieren. Oracle liefert das Kommandoprogramm jpub
mit seiner Client-Distribution. Dieses Tool wandelt deklarierte Benutzertypen (user defined
types) aus der Datenbank in entsprechende Java-Klassen um. Das Tool startet man auf der
Kommandozeile mit dem Befehl jpub:
(vgl. Abb.1 auf der folgende Seite).
-user: Der Parameter user definiert den Benutzer, der in der DB bekannt ist
-url: Die JDBC-URL an der sich JPublisher anmeldet.
-builtintypes: entweder oracle oder jdbc. Ist der Parameter oracle werden die original
Oracle-Datentypen aus dem Paket oracle.sql verwendet. Sonst gelten die normalen JDBCDatentypen.
-sql: Liste der Typen, die als Java-Klassen verfügbar gemacht werden sollen. Die Liste wird einfach
durch Komma getrennt, z.B. –sql=a,b,c würde die Typen a, b, c aus der DB in Java-Klassen
umwandeln. Mit einem Doppelpunkt dahinter kann angegeben werden, wie die Klasse heißen soll,
z.B. –sql=a:b generiert eine Java-Klasse b auf der Basis des Datentyps a.
Beim Ausführen des Befehls liegen im aktuellen Verzeichnis zwei neue Quelldateien:
JPublisher erzeugt zu jedem Typ immer 2 Java Klassen. Eine der Klassen wird dabei mit einem
zusätzlichen angehängten REF im Namen generiert.
1
Datenbanken
Abb.1:
2
Datenbanken
Referenzen und transiente Objekte.
Einsatz der generierten Klassen. Die generierten Klassen können wie normale Datentypen in einem
SQLJ-Block eingesetzt werden. Bei der Abfrage von Objekten muß die gewünschte Art des Objekts
(transientes Objekt oder referenziertes Objekt) betrachtet werden. Falls echte Referenzen von der DB
abgefragt werden sollen, dann muß das in der SELECT-Anweisung explizit mit der Funktion REF
verlangt werden.
Will man nur die Werte von der DB erhalten (Abfrage transienter Objekte), dann erfolgt das über das
Schlüsselwort VALUE in der SELECT-Klausel der SQL-Anweisung.
Der folgende Quelltext faßt das zusammen.
3
Datenbanken
Java Stored Procedures
4
Herunterladen