Databases Reference
In-Depth Information
out.append(person.toString());
out.flush();
}
public List<Person> selectByFirstName(String firstName) {
List<Person> result = new ArrayList<Person>();
while (in.hasNext()) {
Person person = Person.toPerson(in.next());
if (person.getFirstName().equals(firstName))
result.add(person);
}
return result;
}
}
Das System arbeitet eigentlich ganz zufriedenstellend: Wenn wir unter 100 000
Datensätzen nach dem zuletzt eingefügten Datensatz suchen, benötigen wir dazu
nicht einmal eine Sekunde. Gute DBMS sind da möglicherweise schneller, aber für
einen ersten Wurf ist das gar nicht schlecht. Auf der Basis dieses einfachen Pro-
gramms könnten wir jetzt eine klassische Software mit Anwendungslogik und
GUI entwickeln. Bis auf einige Ausnahmen, wie etwa die Mehrbenutzerfähigkeit,
sind auch die Charakteristika eines DBMS erfüllt. Integritätsregeln können for-
muliert werden, wenn wir beispielsweise im Konstruktor der Klasse Person die
Parameter auf Plausibilität prüfen. Wir sehen aber bereits hier, dass wir immer
dann, wenn sich diese Spielregeln ändern, auch den Code ändern müssen.
Irgendwann wollen wir in unserer Datenbank auch weitere Daten verwalten:
Möglich sind Adressen oder Aufträge, die wir von den Personen erhalten ha-
ben. Wir bemerken bald, dass wir nicht nur GUI und Anwendungslogik unserer
Software, sondern auch die Datenhaltung signifikant ändern müssen. Für einen
beliebigen Datentyp T können wir Teile unseres DBMS - wie etwa die Methode
insert - in Java generisch implementieren. Die Signatur muss nur in
void <T> insert()
geändert werden. Objekte wie Adressen ziehen einen ganzen Rattenschwanz an
Entscheidungen nach sich: Soll zu jeder Person die Adresse in einer Datei zu-
sammen mit dem Datensatz der Person gespeichert werden, oder kommen alle
Adressdaten in eine eigene Datei? Im ersten Fall müssen wir die Möglichkeit be-
rücksichtigen, dass eine Person mehrere Adressen haben kann. Im zweiten müs-
sen wir eine eigene Klasse für Adressen definieren und noch vereinbaren, wie
Adressen und Personen miteinander verknüpft werden, wie unser DBMS also
zu einer Person die zugehörigen Adressen ermittelt. Die Definition einer eigenen
Klasse für die Adressen stellt uns vor keine großen Probleme, da sie der Klasse
Person sehr ähnelt. Der Typ DBMS muss jedoch um einige Methoden, wie die
Abfrage selectByStreet , erweitert werden.
Search WWH ::




Custom Search