Weitere aktuelle Java-Titel finden Sie bei dpunkt.
 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index


18.2.6

SQL-Varianten


JDBC stellt zwei Möglichkeiten zur Ausführung von SQL-Anweisungen bereit: Für viele SQL-Aufgaben kann man sowohl dynamisches SQL als auch vorbereitetes SQL benutzen. Vorbereitetes SQL bietet jedoch zum einen unter bestimmten Umständen bessere Performance, zum anderen ist es in einigen Situationen einfacher anzuwenden (z. B. wenn in der SQL-Anweisung Parameter gesetzt werden müssen).

In Tabelle 18.1 sind die Unterschiede zwischen den beiden SQL-Ausführungsvarianten dargestellt.

Tabelle 18.1: Unterschiede zwischen dynamischem und vorbereitetem SQL
Dynamisches SQLVorbereitetes SQL
SQL-Anweisung ist abgeschlossen (keine Parameter).SQL-Anweisung kann variable Parameter enthalten.
Eingeschränkte Verwendung von Datentypen (nur solche, die im SQL-String angegeben werden können).Verwendung aller Datentypen möglich.
Parameter müssen immer als String in die SQL-Anweisung eingebaut werden.Parametern werden vom Treiber in die SQL-Anweisung eingesetzt.
Bei wechselnden Parametern muss die SQL-Anweisung erneut vorbereitet werden.Einmalige Kompilierung und Einsetzen verschiedener Parameter (implementierungsabhängig).
Bei wechselnden Parametern nur eingeschränkte Performance.Gute Performance bei wiederholter Ausführung mit variierenden Parametern.
Ein PreparedStatement-Exemplar kann nur eine SQL-Anweisung ausführen (allerdings mit variierenden Parametern).Ein Statement-Exemplar kann beliebig viele verschiedene SQL-Anweisungen ausführen.

Bei beiden Arten handelt es sich um prozedurale SQL-Schnittstellen: SQL-Strings werden in der Anwendung konstruiert und zur Ausführung zum Server geschickt. Die Konstruktion des SQL-Strings kann dabei bei beiden Varianten auch zur Laufzeit durchgeführt werden.

Die Unterschiede zwischen diesen beiden Ausführungs-Varianten beziehen sich im Wesentlichen auf die Wiederverwendbarkeit der SQL-Anweisung und der Parameter, die in der SQL-Anweisung gesetzt werden, die unterstützten Datentypen sowie die Ausführungsgeschwindigkeit. Bei der Verarbeitung der Ergebnismenge nach der Ausführung der SQL-Anweisung gibt es keine Unterschiede mehr zwischen den beiden SQL-Varianten.

Die Verwendung von einfachem SQL bietet sich dann an, wenn die Anzahl der verwendeten Parameter in der SQL-Anweisung variiert (z. B. bei Abfragen, bei denen viele optionale Suchkriterien definiert werden können). Das Einfügen von LOB-, Objekt- und Datum-Typen ist jedoch mit ihnen nicht durchführbar bzw. relativ aufwendig, da die richtige Formatierung im SQL-String berücksichtigt werden muss. Dynamisches SQL wird im Detail in Abschnitt 18.5 beschrieben.

In fast allen anderen Fällen ist vorbereitetes SQL vorzuziehen, da dadurch in der Regel weniger Typ-Konvertierungen bei der Programmierung durchgeführt werden müssen, alle Datentypen als Parameter verwendet werden können und bei wiederholter Ausführung derselben SQL-Anweisung mit variierenden Parametern eine bessere Performance erreicht wird (beim Oracle JDBC-Treiber ca. Faktor 2 gegenüber einfachem SQL). Eine ausführliche Beschreibung zu vorbereitetem SQL gibt Abschnitt 18.7.


 Inhaltsverzeichnis   Auf Ebene Zurück   Seite Zurück   Seite Vor   Auf Ebene Vor   Eine Ebene höher   Index

Copyright © 2002 dpunkt.Verlag, Heidelberg. Alle Rechte vorbehalten.