Konzeption und Implementierung eines ... - Stephan, Daniel
Konzeption und Implementierung eines ... - Stephan, Daniel
Konzeption und Implementierung eines ... - Stephan, Daniel
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
75 6.3. DATA ACCESS COMMANDS<br />
ändern zu können, ohne dass die gesamte Anwendung davon beeinträchtigt<br />
wird. Daher führt man eine Abstraktionsschicht ein, die den Datenzugriff von<br />
anderen Teilen der Anwendung abschottet.<br />
Diese Schicht besteht hier aus einer Reihe von Zugriffsobjekten. Jedes dieser<br />
Objekte bietet die Methoden an, die die Anwendung im Rahmen ihres Ablaufs<br />
benötigt, <strong>und</strong> implementiert sie - spezifisch für eine ausgewählte Technologie.<br />
Die hier verwendete Technologie wird durch Hibernate bereitgestellt (ein Open-<br />
Source Projekt, es handelt sich dabei um einen objektrelationalen Mapper, kurz<br />
ORM, der eine objektorientierte Schnittstelle für relationale Datenbanken bie-<br />
tet).<br />
Dies sei am Bespiel des DAOs für das Cluster Objekt dargestellt (in S. 76<br />
<strong>und</strong> S. 77 zu sehen). Zentral für die Abstraktion ist die Trennung der Imple-<br />
mentation (ClusterDaoImpl) von seiner Spezifikation (ClusterDao, erbend von<br />
Dao). Die Anwendung arbeitet ausschließlich mit der Schnittstelle ClusterDao.<br />
Die verwendete Implementation (in diesem Falle eben ClusterDaoImpl) lässt<br />
sich jedoch deklarativ (mit Hilfe einer XML-Datei für die Konfiguration des<br />
Systems) jederzeit ändern, ohne dass Anwendungscode davon betroffen ist. Das<br />
Basis-Interface Dao wurde eingeführt, nachdem klar wurde, dass viele Methoden<br />
in jedem DAO nötig werden würden. So sind diese Gemeinsamkeiten auch in der<br />
Struktur dokumentiert. Aus den selben Gründen wurde das Objekt DaoSupport<br />
eingeführt, das die Gemeinsamkeiten der verschiedenen DAOs für Hibernate im-<br />
plementiert.<br />
6.3. Data Access Commands<br />
Während der Entwicklung hat sich herauskristallisiert, dass in den prinzipiell<br />
eher groben Zugriffsmethoden der DAOs zu oft ähnliche Abläufe kodiert waren<br />
<strong>und</strong> die Wiederverwendung dieser Abläufe damit eher schlecht war. Das führte<br />
dazu, dass Code in einem DAO weitgehend optimiert wurde, weil die Notwen-<br />
digkeit dort akut war, während in einem anderen DAO ganz ähnlicher Code<br />
noch völlig unoptimiert vorlag. Die Code-Qualität war damit an einigen Stellen<br />
unnötigerweise niedriger als an anderen.<br />
Somit suchte der Autor nach Möglichkeiten, den Code ” mobiler“ <strong>und</strong> die<br />
Struktur der Datenzugriffsschicht feingranularer zu gestalten. Die Lösung er-<br />
schien in Form des Command Patterns (siehe dazu auch [GHJV96]). Eigentlich<br />
ist das Command Pattern für die Entwicklung von Benutzerschnittstellen ent-