20.17 Java Data Objects (JDO)
 
In einer objektorientierten Programmiersprache wie Java liegen alle Informationen in Objekten. Wenn nun relationale Datenbanksysteme im Moment noch in ihrem vollen Saft stehen, dann stellt sich die Frage, wie Java-Objekte in einer relationalen Datenbank untergebracht werden. Die beste Lösung wäre es, eine Zwischenschicht zu besitzen, die Java-Objekte in die Datenbank schreibt. Dabei ist Serialisierung eine Möglichkeit. Das Objekt wird persistent, indem es als serialisierter Bytestrom, als BLOB1
,in die Datenbank geschrieben wird. Eine andere Möglichkeit ist das objektrelationale Mapping. Die Eigenschaften der Objekte werden auf Relationen und Objektverweise (Referenzen) durch Schlüsselbeziehungen zwischen den Relationen abgebildet. Schwierig werden dann nur Konzepte wie Vererbung. Für Programmierer sind sie selbstverständlich, aber eine Datenbank-Abbildung ist knifflig.
Eine andere Möglichkeit definiert ein neuer Standard mit dem Namen JDO. Die Abkürzung steht für Java Data Objects, und die unter dem JSR-12 geführte Spezifikation beschreibt ein herstellerunabhängiges Framework zur persistenten Speicherung von Java-Objekten in transaktionalen Datenspeichern. Die Spezifikation wurde im Mai 2001 von bekannten Firmen wie Sun, IBM und Apple formuliert. JDO definiert eine einheitliche Schnittstelle für den Zugriff auf persistente Daten, wobei die physikalische Speicherung ziemlich egal ist. Die Objektinformationen können in Dateien, Datenbanken oder sonstigen Systemen abgespeichert werden. Mit Hilfe von JDO kann der Programmierer Datenobjekte ohne Kenntnis der Speichermechanismen bearbeiten. Dies ist für die Entwicklung großer Systeme ein deutlicher Vorteil, denn die Entwickler müssen sich nicht näher mit den Interna von Datenbanken herumärgern, sie können sich auf die reine Applikationslogik konzentrieren. Die einzelnen Hersteller, JDO-Vendor genannt, implementieren eine Speichermöglichkeit für ihr System.
Mittlerweile gibt es auch eine Reihe von Open-Source-Projekten, die sich einer objektrelationalen Umsetzung gewidmet haben. Eines davon ist TriActive JDO (TJDO) unter http://tjdo.sourceforge.net/. tJDO setzt die Sun-Spezifikation von JDO der Version 1.0.1 um. Ein schönes (knappes) Tutorial erklärt, wie ein Person-Objekt in eine MySQL-Datenbank übertragen wird. Nach dem Schreiben der Klasse ist eine XML-Datei zur Angabe der persistenten Felder nötig. Anschließend erweitert ein so genannter Bytecode Enhancer den Bytecode der Person-Klasse so ab, dass Funktionen für den Datenbankzugriff dort eingebaut werden. Jetzt kann die Klasse genutzt werden.
1 Ein BLOB (Binary Large OBject) ist großes Binärobjekt, das eine beliebige Anzahl Daten enthalten kann.
|