Java ist auch eine Insel

Montag, Juli 03, 2006

Insel: JDBC-Versionen

Mit dem wachsen der Java-Versionen ist auch die Versionsnummer von JDBC gestiegen.

• Am Anfang stand JDBC 1.0, was Sun im Jahre 1997 in Java 1.1 integriert hat. JDBC 1.0 basiert auf SQL-92.

• Die nächste Spezifikation ist die JDBC 2.0 API und berücksichtigt SQL-99 (SQL-3). Die Spezifikation der Version 2 setzt sich aus zwei Teilen zusammen: Einer JDBC 2.0 core API und einer JDBC 2.0 Optional Package API. Die Core API im Paket java.sql erweitert das Ur-JDBC um Batch-Updates, SQL-3 Datentypen. Das JDBC Optional Package liegt im Paket javax.sql und definiert unter anderem Data-Source, Connection-Pooling, Verteilte Transaktionen. Während das Core-Paket fester Teil von Java 1.2 war, ist das optionale Paket in Java 1.2 noch echt optional und erst in Java 1.3 fest integriert. Für fast alle Datenbanken gibt es JDBC 2.0 Treiber.

• JDBC 3.0 ist Teil von Java 1.4. Es integriert die JDBC 2.1 core API, das JDBC 2.0 Optional Package und nimmt neu unter anderem hinzu: Savepoints in Transaktionen, Wiederverwendung von PreparedStatements, JDBC-Datentypen BOOLEAN und DATALINK, Abrufen automatisch generierter Keys, Änderungen von LOBs und mehrere gleichzeitig geöffnete ResultSets.

• In Java 5 hat sich nicht viel an JDBC passiert. Es ist immer noch JDBC 3.0, doch JDBC RowSet Implementierungen sind hinzugekommen.

• JDBC 4.0 ist Teil von Java 6 mit einigen Änderungen: Annotationen für SQL-Queries, Treiber werden – wenn vorbereitet – automatisch angemeldet, XMLDatentypen aus SQL:2003, Zugriff auf die SQL ROWID.

Hinweis Eine große Anzahl JDBC 4 Treiber ist so schnell nicht zu erwarten. http://developers.sun.com/product/jdbc/drivers zählt bislang keinen JDBC 4 Treiber auf – obwohl ihre eigene Datenbank Java DB durchaus JDBC 4 spricht. Für JDBC 3 gibt es immerhin 38 Treiber; 99 sind JDBC 2 Treiber.


Grad der SQL-Unterstützung

Auch wenn der neueste Treiber einer Datenbank vor uns liegt, heißt das nicht, dass er auch alle JDBC-Möglichkeiten ausschöpft. Zum einen kann das daran liegen, dass die Datenbank diese Möglichkeiten gar nicht bietet – etwa Savepoints, oder der Treiber nicht hinreichend aktuell ist.

Einige Möglichkeiten lassen sich über die Metadaten einer Datenbank erfragen. Dazu zählt zum Beispiel, ob ein Treiber/Datenbank den vollen ANSI-92 Standard unterstützt. Die Metadaten liefern über die Methoden supportsANSI92XXXSQL() ob die Datenbank ANSI 92 Entry Level (Gilt immer), Intermediate SQL oder Full SQL unterstützt. Auch für ODBC gibt es unterschiedliche Level: Mimimum SQL Grammar, Core SQL Grammar, Extendes SQL Grammar. Weitere Informationen gibt die Sun-Webseite http://java.sun.com/products/jdbc/driverdevs.html.

AddThis Social Bookmark Button