Die Wahl des richtigen Treibers kann den Austausch zwischen Java-Anwendungen und Datenbanken verbessern. Der Artikel erklärt, worauf es dabei ankommt, und macht die verschiedenen Treber-Typen verständlich.
Einerlei, ob es sich um einen Enterprise-Client handelt oder nicht: Java-Entwickler wissen, dass die optische Präsentation allein nicht alles ausmacht. Der Datenbankzugriff ist bei jeder Neuentwicklung ebenso wichtig wie die Schnittstelle. Die Programmierschnittstelle Java Database Connectivity (JDBC) liefert eine Allzweck-Verknüpfung zwischen Anwendungen und Datenbanken. JDBC basiert auf der Open-Database-Connectivity-Technologie (ODBC) von Microsoft. Sie eignet sich für relationale Datenbanken und unterstützt SQL.
Mit dem richtigen Treiber lassen sich über diese API Verbindungen zu beliebigen Datenbanken herstellen, die eine ODBC-Schnittstelle unterstützen. Anders ausgedrückt: Kommt eine aus drei Schichten aufgebaute Anwendung zum Einsatz, kann die JDBC zum Erstellen einer Abstraktionsschicht zwischen der Geschäftslogik- und der Datenebene genutzt werden. Dazu braucht es lediglich eine Datenbank unter den Anwendungen, die entsprechende Treiber zur Verfügung stellt.
Dabei ist stets zu bedenken, dass die JDBC RDBMS-orientiert ist und daher mit jeder Datenbank arbeiten kann, die Tabellen verwendet.
Auf den Typ kommt es an
Die gute Nachricht lautet, dass es JDBC-Treiber für die meisten kommerziellen sowie Open-Source-Datenbanken gibt. Das sind insgesamt mehr als 200. Doch das allein reicht noch nicht aus. Abgesehen vom Datenbanktyp existieren auch vier unterschiedliche Typen von JDBC-Treibern. Entscheidend dabei ist, den geeigneten Typ für die jeweilige Umgebung auszuwählen.
Diese Treiber müssen grundsätzlich immer einen datenbankunabhängigen Datenbankcode unterstützen. Es gibt einen Standard, der dies gewährleistet: der Befehlssatz ANSI 92 SQL-2 Entry Level. Die Kompatibilität der JDBC-Treiber ermöglicht breite Konnektivität. Deshalb kann es sein, dass eine völlig abstrakte Schnittstelle eventuell nicht in der Lage ist, alle Funktionen einer bestimmten Datenbanktechnologie zu nutzen. Aber die Möglichkeiten zur flexiblen Kombination von Datenbanktechnologien, ohne Anwendungen umschreiben zu müssen, wiegen diesen Nachteil in modernen Unternehmensumgebungen wieder auf. Es lassen sich übrigens auch eigene JDBC-Treiber erstellen. Wenn sie funktionieren, sollten sie auch veröffentlicht werden.
Die JDBC gibt jeden beliebigen Befehl der Anwendung an die Engine weiter. Dadurch bleibt der Zugriff auf alle gewünschten Datenbankfunktionen erhalten. Freilich kennzeichnet dann die angestrebte datenbankunabhängige Schnittstelle ein geringeres Maß an Abstraktion.
Zumeist erhält man die JDBC-Treiber beim Anbieter der jeweils verwendeten Datenbank. Andernfalls finden sie sich auch auf der Java-Website[1].
JDBC-Treiber kommen in vier unterschiedlichen Varianten:
- Typ 1: Die Java-API für Datenbankkonnektivität ist ODBC-kompatibel. Soll eine Datenbank mit ODBC-Unterstützung mit Java-Code verknüpft werden, kann ein JDBC-Treiber vom Typ 1 eine Brücke zwischen ODBC und JDBC bilden. Dieser Treiber wurde speziell entworfen, um die Verwendung der JDBC zu fördern. Denn er machte diese kompatibel zur Installationsbasis, also zu bereits auf dem Markt befindlichen ODBC-Datenbanken.
- Typ 2: Diese Treiber ähneln prinzipiell den Treibern vom Typ 1. Allerdings dienen sie als Brücke zu bestimmten Datenbankschnittstellen statt zu einem Standard. Dieser Typ wurde entwickelt, um das Java Native Interface (JNI) zu nutzen. Ein Treiber vom Typ 2 wandelt mithilfe von JNI-Datenbankaufrufe in für die Datenbank geeignete Funktionsaufrufe um.
- Typ 3: Diese Treiber sind komplexer aufgebaut als Typ 1 oder Typ 2. Sie handhaben Aufrufe der API, indem sie diese in generische Datenbankaufrufe umwandeln und sie anschließend, unter Verwendung des Protokolls der Datenbank, wieder in Aufrufe zurückverwandeln. Sie erscheinen vielleicht ein wenig komplex, doch vom Ansatz her sind sie am geradlinigsten.
- Typ 4: Bei diesem Typus handelt es sich um spezifische Java-Treiber, die eigens dafür geschrieben wurden, die JDBC mit bestimmten Datenbanken einzusetzen. Die Verfügbarkeit dieser Treiber nimmt natürlich im Lauf der Zeit zu. Es sind keine Aufrufe erforderlich. Das Verfahren besteht vielmehr in einer direkten Kommunikation mit der Datenbank über das jeweils geeignete Protokoll.
Grundlegende Auswahlkriterien
Im Allgemeinen sind die Treiber vom Typ 1 und Typ 3 generisch, während die vom Typ 2 und Typ 4 datenbankspezifisch funktionieren. Diese Auswahlkriterien allein genügen jedoch oft nicht für eine endgültige Entscheidung. Hier also noch einige weitere Charakteristika:
- Typ 1: Treiber vom Typ 1 kommen selten zum Einsatz. Ausnahme: Es wird bereits eine Datenbank mit Unterstützung für die ODBC, jedoch nicht für die JDBC verwendet. Im Java SDK ist zwar ein generischer JDBC-ODBC-Brückentreiber enthalten, doch der veranschaulicht nur die Schwachstelle dieses Typs: die geringe Geschwindigkeit. Es gibt kaum Gründe dafür, einen JDBC-Treiber vom Typ 1 zu benutzen, wenn ein anderer Typ zur Verfügung steht.
- Typ 2: Derzeit mangelt es an Treibern vom Typ 2. Schon deshalb dürfte die Wahl vermutlich nicht auf diesen Typ fallen. Bei eigenständigen Anwendungen und Server-Anwendungen können diese Treiber jedoch die richtige Lösung anbieten. Zudem erfordern sie gewöhnlich weniger technische Kenntnisse der Funktionsweise der Zieldatendank.
- Typ 3: Treiber vom Typ 3 sind Treibern vom Typ 1 eindeutig überlegen. Es kommt mitunter vor, dass für eine bestimmte Datenbank einfach keine Treiber vom Typ 2 oder vom Typ 4 verfügbar sind. Microsoft Access liefert ein Beispiel hierfür. Wenn kein Treiber vom Typ 4 existiert, bleibt die Wahl zwischen einem Treiber vom Typ 2 oder einem vom Typ 3. Der Typ 3 bietet dann mehr Portierungsmöglichkeiten, sofern dies von Belang ist.
- Typ 4: Typ-4-Treiber sind häufig die effizienteste Alternative. Sie stellen eine direkte Verbindung her, statt Aufrufe umzuleiten. Falls es für die konkret verwendete Datenbank einen Treiber vom Typ 4 gibt, sollte die Wahl generell auch auf diesen fallen. Ausnahmen hiervon bilden eigenständige Anwendungen und Server-Anwendungen, für die die protokollspezifische Beschaffenheit von Typ 4 keine Vorteile bringt. Trotzdem ist die Geschwindigkeit eines Typ-4-Treibers (ebenso wie bei Typ 2) sehr hoch. Denn es gibt nur einen Umwandlungsschritt.
Weitere Informationen zu den JDBC-Treibern bietet die Sun-Website[2].
URLs in diesem Artikel:
[1] = http:/
[2] = http:/