23.2 Datenbanken und Tools 

Vor dem Glück, eine Datenbank in Java ansprechen zu können, steht die Inbetriebnahme des Datenbanksystems. (Für dieses Kapitel ist das der schwierigste Teil.) Nun gibt es eine große Anzahl von Datenbanken – manche frei und Open Source, manche sehr teuer –, sodass sich dieses Tutorial nur auf eine Datenbank beschränkt. Das Rennen macht in dieser Auflage die pure Java-Datenbank HSQLDB, die sehr leicht ohne Administratorrechte läuft und genügend leistungsfähig ist. Da JDBC aber von Datenbanken abstrahiert, ist der Java-Programmcode natürlich auf jeder Datenbank lauffähig.
Hinweis Im SDK von Java 6 ist im Unterverzeichnis db, also etwa C:\Programme\ Java\jdk1.6.0\db, die Datenbank Java DB (http://developers.sun.com/prodtech/javadb/) integriert. Sie basiert auf Apache Derby, dem früheren Cloudscape von IBM. |
23.2.1 HSQLDB 

HSQLDB (http://hsqldb.org/) ist ein pures Java-RDBMS unter der freien BSD-Lizenz. Die Datenbank geht lässt sich in zwei Modi fahren: als eingebettetes Datenbanksystem und als Netzwerkserver. Im Fall eines eingebauten Datenbanksystems ist lediglich die Treiberklasse zu laden und die Datenbank zu bestimmen, und schon geht’s los. Wir werden für die folgenden Beispiele diese Variante wählen.
Auf der Download-Seite von SourceForge befindet sich ein Archiv wie hsqldb_1_8_0_8.zip, das wir auspacken, zum Beispiel nach c:\Programme\hsqldb. Unter C:\Programme\hsqldb\ demo\ befindet sich ein Skript runManagerSwing.bat, das ein kleines Datenbank-Frontend öffnet. Im folgenden Connect-Dialog setzen wir den Typ auf HSQL Database Engine Standalone und die JDBC-URL auf jdbc:hsqldb:file:c:\TutegoDB – der Teil hinter file: gibt also den Pfad zu der Datenbank an. (Liegt die Datenbank im Eclipse-Workspace, kann später die absolute Angabe entfallen.)
Nach dem Dialog-OK fügt im Menü Options die Operation Insert Test Data einige Tabellen mit Dummy-Daten ein und führt ein SQL-SELECT aus, das uns den Inhalt der Customer-Tabelle zeigt. Beenden wir anschließend das Swing-Programm mit File Exit. Im Dateisystem hat der Manager jetzt eine .log-Datei angelegt – zu ihr gesellt sich später noch eine .script-Datei –, eine .properties-Datei und eine .lck-Datei.
Für den Datenbankzugriff aus Java ist nur das Archiv hsqldb.jar aus dem lib-Verzeichnis von HSQLDB in den Klassenpfad aufzunehmen.
23.2.2 Weitere Datenbanken 

Die Anzahl der Datenbanken ist zwar groß, aber es gibt immer wieder Standard-Datenbanken und freie Datenbank-Management-Systeme.
MySQL
MySQL (http://www.mysql.de/) ist ein häufig eingesetzter freier und schneller Open-Source-Datenbank-Server. Er wird oft im Internet in Zusammenhang mit dynamischen Webseiten eingesetzt; das Zusammenspiel Linux, Apache, MySQL, PHP (LAMP-System) ist hoch gelobt. Herausragende Eigenschaften sind die Geschwindigkeit und die Bedienbarkeit. Die MySQL-Datenbank spricht der unter der LGPL stehende JDBC-Treiber MySQL Connector/J (http://dev.mysql.com/downloads/connector/j/) an. Nach dem Entpacken muss das Jar-Archiv des Treibers in den Klassenpfad aufgenommen werden. Er unterstützt die JDBC-4.0-API.
Oracle
Um die Verbreitung weiter zu erhöhen, ist die Firma Oracle dazu übergegangen, eine vollwertige Version zum Download oder als CD freizugeben. Wer den Download nicht scheut, der kann unter http://www.oracle.com/technology/software/products/database/oracle10g/index. html die Version für Windows, Mac OS X, Linux und weitere Unix-Systeme herunterladen.
DB2 Universal Database Express/DB2 Express-C
Von IBM stammt die etwas eingeschränkte, aber freie Version von DB2 mit exzellenter Java-Unterstützung. Unter http://www-306.ibm.com/software/data/db2/express/index.html lässt sich die Datenbank für Windows und Linux herunterladen.
Microsoft SQL Server
Die Datenbank selbst ist zwar nicht frei – die SQL Server 2005 Express Edition einmal ausgenommen –, aber Microsoft bietet unter http://msdn.microsoft.com/data/ref/jdbc/ einen Typ-4-JDBC-Treiber für seinen SQL Server 2000 und SQL Server 2005 an. Der Treiber benötigt Java SE 1.4 und ist auf den Betriebssystemen Windows, Linux, Solaris AIX und HP-UX lauffähig.
Microsoft Access
Microsoft Access ist keine freie Software, aber auf vielen Windows-Systemen installiert. Mit Microsoft Access lässt sich mit wenigen Handgriffen eine Datenbank zusammenbauen, die dann anschließend über die JDBC-ODBC-Bridge aus Java zugänglich ist. Viele Anwender haben das Office-Paket von Microsoft zu Hause installiert und so schon eine Datenbank zur Verfügung.
Eine einfache Datenbank ist schnell gebaut: Nach dem Start von Access erscheint automatisch ein Dialog mit dem Eintrag Leere Access-Datenbank. (Alternativ lässt sich eine neue Datenbank unter dem Menüpunkt Datei > Neu ... einrichten.) Wir wählen den ersten Eintrag Datenbank und speichern die Datenbank unter einem aussagekräftigen Namen. Access benötigen wir nicht mehr direkt, weil die Kommunikation mit der Datenbank anschließend über den ODBC-Manager läuft. Dieser setzt dann auf dem SQL-Kern von Access auf. Im ODBC-Manager muss dafür die Datenquelle angemeldet werden.
ODBC einrichten und Access damit verwenden
Die meisten Datenbanken öffnen einen TCP/IP-Port, und die Programme kommunizieren über ein definiertes Netzwerkprotokoll. Access ist dazu nicht in der Lage, und so muss eine Access-Datenbank als ODBC-Datenquelle bei einer Zentrale angemeldet werden; im nächsten Schritt kommuniziert ein spezieller Java-Datenbanktreiber mit dieser ODBC-Zentrale.
Zum Einrichten gehen wir zunächst in die Systemeinstellungen (Start • Einstellungen • Systemsteuerung) und suchen ab Windows 2000 im Verzeichnis Verwaltung nach dem Symbol Datenquellen (ODBC). Nach dem Start öffnet sich ein Dialog mit dem Titel ODBC-Datenquellen-Administrator. Wir gehen auf Hinzufügen, um eine neue Benutzer-Datenquelle hinzuzufügen. Im Dialog mit dem Titel Neue Datenquelle erstellen wählen wir den Microsoft Access-Treiber aus und gehen auf Fertigstellen. Ein Dialog öffnet sich, und wir tragen unter Datenquellenname einen Namen für die Datenquelle ein. Darunter können wir in Java später die Datenbank ansprechen. Der Name der Datei hat nichts mit dem Namen der Datenquelle gemeinsam. Optional können wir noch eine Beschreibung hinzufügen. Wichtig ist nun die Verbindung zur physikalischen Datenbank. Im umrandeten Bereich Datenbank aktivieren wir über die Schaltfläche Auswählen einen Datei-Selektor. Hier hangeln wir uns bis zur in Access erstellten Datei durch und tragen sie ein. Nun müssen wir nur noch einige Male OK anklicken, und wir sind fertig. Wenn der Administrator nicht meckert, können wir nun ein JDBC-Programm starten.
Abbildung 23.1 Auswählen einer Datenbank
23.2.3 Eclipse-Plugins zum Durchschauen von Datenbanken 

Es gibt fast genauso viele Tools zum Administrieren von Datenbanken wie Datenbanken selbst. Da aber die Eclipse IDE for Java EE Developers ohnehin schon installiert sein sollte, nutzen wir dieses als Datenbank-Tool. Andere Eclipse-Plugins sind QuantumDB (http://quantum.sourceforge.net/) oder auch die Standalone-Anwendung SQuirreL (http://squirrel-sql.sourceforge.net/).
Eclipse WTP
Wir öffnen den Dialog unter File • New • Other… • Data • SQL Scrapbook Page und geben einen Dateinamen (test) für eine Skriptdatei an. Finish schließt den Dialog, legt eine Datei test.sqlpage an und öffnet diese in einem neuen Editor für SQL-Anweisungen. Zusätzlich aktiviert Eclipse eine neue View Database Explorer.
In der View ist unter Connections das Kontextmenü zu bemühen und New Connection… auszuwählen. Im folgenden Dialog ist links bei den Datenbank-Managern Generic JDBC • 1.0 auszuwählen. Dann geben wir an:
- Database: ein beliebiger Name, der nur zur Anzeige dient
- JDBC driver class: die Treiberklasse org.hsqldb.jdbcDriver
- Class location: Ort der Jar-Datei. Über Browse wählen wir die Datei hsqldb.jar aus
- Connection URL: die JDBC-URL für die angelegte Datenbank, jdbc:hsqldb:file:c:/TutegoDB
- Unter User information geben wir unter User ID »sa« ein, und das Password bleibt leer.
Mit einem Klick auf die Schaltfläche Test Connection bekommen wir die Information, ob alles gut geht oder ob es Probleme mit den Parametern gibt.
Abbildung 23.2 Verbindungsdaten eintragen
Finish schließt den Dialog ab, und nach einer erfolgreichen Verbindung sind in der View die Datenbank sowie ihre Schemas zu sehen.
Arbeiten mit der Scrapbook-Seite
In der Scrapbook-Seite können wir unsere Datenbank mit Leben füllen oder Abfragen starten, etwa mit:
SELECT * FROM Customer;
Die rechte Maustaste, im Scrapbook-Editor gedrückt, bietet im Kontextmenü ein das Skript anstoßendes Run SQL. (Im folgenden Dialog wählen wir Use existing connection.)
Wenn wir unsere Beispiele beendet haben, sollten wir im Database Explorer die Verbindung wieder schließen; dazu ist auf unserer Datenbank in der View Database Explorer im Kontextmenü Disconnect zu wählen.
Abbildung 23.3 Die drei Views Database Explorer, Data Output und der Editor für das SQL Scrapbook