Databases Reference
In-Depth Information
Mit Hilfe von Methoden wie save werden hier Objekte in der Datenbank abgelegt
und mit find Objekte aus der Datenbank eingelesen. Es ist auch gar nicht schwie-
rig mit Hilfe von JDBC für eine Datenbank passende Klassen zu entwickeln, die
dann einen objektorientierten Zugriff ermöglichen:
Jede Tabelle entspricht einer Klasse.
Jeder Datensatz entspricht einem Objekt.
Jede Spalte entspricht einem Attribut.
Jeder Tabelle wird also eine Klasse zugeordnet, in deren Methoden der Daten-
bankzugriff gekapselt wird. Dieser Prozess ist algorithmisch formulierbar und
kann sogar in Form eines Code-Generators automatisiert werden. In der Pra-
xis können wir das Verfahren aber nur in sehr einfachen Fällen einsetzen. Der
Schwanz wackelt nämlich nicht mit dem Hund: Meistens wird ein objektorien-
tiertes Design entwickelt und anschließend die passende Datenbank. Wir müs-
sen also einen Prozess finden, um unser Objektmodell auf ein relationales Daten-
modell abzubilden. Ein solches Verfahren wird objektrelationale Abbildung, oder
kürzer und etablierter OR-Mapping genannt. Auch hier bietet sich ein einfaches
Vorgehen an:
Jeder Klasse entspricht eine Tabelle.
Jedes Objekt entspricht einem Datensatz.
Jedes Attribut entspricht einer Spalte.
Dieser naive Algorithmus stößt aber sehr schnell an seine Grenzen: Solange der
Typ eines Attributs sich direkt einem SQL-Typ zuordnen lässt, gibt es keine Pro-
bleme, doch ist dieser Fall nur für sehr einfache Klassen gegeben. In der Regel
enthält eine Klasse Attribute oder sogar Listen von Attributen mit komplexen Da-
tentypen. In unserem Beispiel könnte dies wie folgt aussehen:
class Reihe{
String name,
String verlag,
Album[] alben,
...
}
Da die Attribute unserer Tabellen nicht alle atomar sind, ist die Abbildung nicht
ganz so einfach. Natürlich kriegen wir auch dieses Problem etwa über die referen-
zielle Integrität in den Griff, aber es gibt sehr viele derartige Sonderfälle. Denkbar
ist nämlich nicht nur ein Array als Typ für das Attribut alben , sondern auch alles,
was der Java-Collection-Framework zu bieten hat. Zudem ist das Objektmodell in
der Regel stark vernetzt. In unserem Fall könnte die Klasse Alben noch weitere
Objektreferenzen beinhalten. Wenn Daten aus der zur Klasse Reihen gehörenden
Tabelle gelesen werden müssen, dann über einen natürlichen Join auch Daten aus
 
Search WWH ::




Custom Search