Einführung in SQLJ

SQLJ ermöglicht Ihnen das Einbetten von SQL-Anweisungen in Java-Programme. SQLJ ist ein ANSI-Standard, der von einem Konsortium führender Hersteller von Datenbank- und Anwendungs-Server-Software entwickelt wurde. Dazu gehören u. a. IBM Corporation, Microsoft Corporation, Sun Microsystems und Oracle.

Das SQLJ-Umsetzungsprogramm setzt eine SQLJ-Quellendatei in eine Standard-Java-Quellendatei sowie in ein serialisiertes SQLJ-Profil um, das Informationen zu statischem SQL-Code in der SQLJ-Quelle enthält. Das Umsetzungsprogramm konvertiert SQLJ-Klauseln in Standard-Java-Anweisungen, indem es die eingebetteten SQL-Anweisungen durch Aufrufe der SQLJ-Laufzeitbibliothek ersetzt. Ein SQLJ-Anpassungsscript bindet das SQLJ-Profil an die Datenbank und erzeugt dabei mindestens ein Datenbankpaket. Die Java-Datei wird kompiliert und (mit den Paketen) für die Datenbank ausgeführt. Die SQLJ-Laufzeitumgebung besteht aus einer SQLJ-Laufzeitbibliothek, die in reinem Java implementiert ist. Die SQLJ-Laufzeitbibliothek ruft den JDBC-Treiber für die Zieldatenbank auf, wie z. B. DB2.

Sie können SQLJ in der Workbench verwenden, um Anwendungen zu erstellen, die mit jeder Datenbank ausgeführt werden können, die SQLJ unterstützt (z. B. DB2 oder Oracle). Die integrierte Anpassungsfunktion funktioniert nur mit DB2.

Die Workbench umfasst die folgenden SQLJ-Funktionen:

SQLJ und JDBC

Zwar ermöglichen sowohl SQLJ als auch JDBC Java-Anwendungen den Zugriff auf relationale Datenbanken, es bestehen aber mehrere Unterschiede zwischen beiden:

Dynamisches SQL und statisches SQL

Im Allgemeinen ist dynamisches SQL flexibler als statisches SQL, da keine SQL-Anweisungen vorab erstellt werden müssen. Statisches SQL ist effizienter, da die Datenbank bereits vor der Ausführung einen großen Teil der Arbeit leistet, die zur Ausführung der SQL-Anweisungen erforderlich ist.

Dynamisches SQL ermöglicht das Abfragen und Aktualisieren von Tabellen, wenn Sie z. B. vor der Ausführung die Anzahl und die Typen der Spalten noch nicht kennen. Bei Verwendung von dynamischem SQL in JDBC kann ein Java-Programm während der Ausführung SQL-Anweisungen erstellen.

Bei Verwendung von dynamischem SQL werden der Datenbankzugriff und die Datenbankberechtigung während der Ausführung ermittelt. Der Benutzer der Anwendung muss über alle erforderlichen Datenbankzugriffsrechte verfügen, und die Datenbank muss die beste Möglichkeit für den Zugriff auf die erforderlichen Daten während der Ausführung ermitteln. Bei Verwendung von statischem SQL werden Zugriff und Berechtigung jedoch während der Anpassung und der Bindung festgelegt. Die Zugriffsrechte des Benutzers, der die Bindung ausführt, bestimmen, was die Anwendung ausführen kann. Die Datenbank ermittelt während der Anpassung und der Bindung die beste Möglichkeit für den Zugriff auf Daten. Dadurch wird die Leistung während der Ausführung verbessert.

Für viele Anwendungen ist es nicht erforderlich, SQL-Anweisungen dynamisch zu erstellen, da die Datenbankmetadaten (wie z. B. Tabellen- und Spaltennamen) während der Ausführung nicht geändert werden. Diese Anwendungen können statisches SQL verwenden, das eine bessere Leistung als dynamisches SQL ermöglicht.

Vorteile von SQLJ

Außer der besseren Leistung durch die Verwendung von statischem SQL hat SQLJ die folgenden Vorteile gegenüber JDBC:

Im Gegensatz zu SQLJ kann JDBC dynamische SQL-Anweisungen ausführen. Wenn eine Anwendung jedoch dynamisches SQL verwenden muss, können Sie mit Hilfe von SQLJ-Klauseln etwas JDBC-Code in Ihr Programm einfügen.

SQLJ-Syntax

SQLJ-Klauseln werden in Java-Code eingebettet. Vor jeder Klausel muss das Symbol #sql stehen. Die folgende SQLJ-Klausel ist ein Beispiel für eine Anweisung SELECT mit einer Java-Variablen in der Klausel WHERE:

#sql [ctx] cursor1 = {SELECT EMP_ACT.EMPNO FROM EMP_ACT WHERE
EMP_ACT.PROJNO = :strProjNo};

SQLJ in DB2

Die SQLJ-Unterstützung von DB2 basiert auf dem SQLJ-ANSI-Standard. Die folgenden Arten von SQL-Anweisungen können in SQLJ-Programmen verwendet werden:

Zugehörige Konzepte
Anwendungsleistung mit SQLJ
SQLJ-fähige Java-Projekte und SQLJ-Dateien
SQLJ für DB2
Zugehörige Tasks
Erstellen von SQLJ-Dateien
Zugehörige Verweise
Syntax von SQLJ-Anweisungen
SQLJ-Einschränkungen für DB2

Feedback