Download (5Mb) - oops/ - Oldenburger Online-Publikations-Server
Download (5Mb) - oops/ - Oldenburger Online-Publikations-Server
Download (5Mb) - oops/ - Oldenburger Online-Publikations-Server
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
98 Umsetzung des Prototyps<br />
eines Platzhalter-Textes ausgeführt – z.B. in dem “Satz” $Pass-is_HERE/ wird den Platzhalter<br />
“HERE” durch den entsprechenden Passwort ersetzt.<br />
Der nächste Schritt in der Bereitstellung der Datenbank-Umgebung ist das Laden und die letzte<br />
Vorbereitung der Modelle, die in der Datenbank als Relationen gespeichert werden.<br />
Ladevorgang und Vorbereitung des Datenmodells<br />
In diesem Schritt werden die von dem Komanndozeile-basierten Programm gelieferten und ggf.<br />
noch manuell verarbeiteten Ruby-Klassen geladen. Mittels Ruby werden erstmal die einzelnen Dateien<br />
rekursiv aus dem Dateisystem geladen (mithilfe des require Befehls). Somit sind alle in der<br />
Abbildung 7.1 dargestellten Klassen dem Backend-System bekannt und die letzten Vorbereitungen<br />
können anfangen.<br />
Nachdem alle Modelle (in der DataMapper Terminologie auch als “Ressourcen” bekannt) geladen<br />
sind, müssen die “abgeschlossen” bzw. überprüft werden. Der Befehl DataMapper.finalize!<br />
ist dafür zuständig. Dieser Zwischenschritt ist benötigt, um diejenige deklarierten Modelle nach Fehler<br />
wie z.B. eine nicht unterstützte Kardinalität (beispielsweise “0..3” anstatt “0..n”) zu untersuchen<br />
sowie die mit den Assoziationen verbundenen Getters und Setters zu initialisieren.<br />
An dieser Stelle ist der Umgang mit dem Datenmodell für die Formulierung von Befehlen wie z.B.<br />
die Erstellung von Instanzen bereit. Die Ausführung der Befehle setzt voraus, dass die Migration (d.h.<br />
die entsprechende Darstellung der Modelle als Relationen in der Datenbank) schon abgeschlossen<br />
bzw. durchgeführt ist. Dieser Schritt wird im kommenden Paragraph erläutert.<br />
Initielle Migration und Befüllung der Datenbank<br />
Der “Seeding” Vorgang muss zuerst über eine Datenbankschema verfügen – zur Zeit wurde nur die<br />
Datenbank und deren Rollenverwaltung durchgeführt worden. Für die Erstellung einer Schema (meist<br />
im engl. als ein “migration” bekannt) müssen weitere DDL Befehle übergeben werden, wodurch die<br />
einzelnen Relationen erstellt werden. Dieser Schritt erfolgt fast automatisch dank dem genannten<br />
“DataMapper” ORM, mittels der DataMapper.automigrate! Befehl.<br />
Die Auswirkung dieses Befehls ist es, dass diejenige Klassen, die mit Eigenschaften (Attributen)<br />
und Assoziationen (Beziehungen) versehen und als DataMapper “Ressourcen” markiert sind, sich in<br />
der Datenbank wiederfinden werden. Das ORM kapselt dann dieser Prozess (die Ausführung von<br />
DDL Befehle wie z.B. CREATE TABLE) ein, abstrahierend von der händischen Übergabe von DDL-<br />
Befehlen und die eventuell damit verbundene Fehlerbehandlung.<br />
Das Konzept einer “Migration” berührt am meisten die einzelnen Schritte, die erfolgen müssen, um<br />
einen gewissen Zustand der Datenbank bzw. des Datenbasis zu erreichen. Beispielsweise lässt sich<br />
die Erstellung einer einzigen Relation auch als ein “Migrationsschritt” ansehen. Vorteilhaft bei diesem<br />
Konzept ist die Möglichkeit, eine ausgeführte Migration zurücksetzen zu können – damit wird den<br />
umgekehrten Weg einer Migration beschrieben. In der entwickelten Softwarelösung wird die ganze<br />
Erstellung der zum Datenmodell gehörenden Relationen als eine einzige Migration gesehen, die durch<br />
eine erneute Initialisierung behoben werden kann.<br />
Nachdem die Relationen erstellt sind, lassen sich diejenige ursprünglichen Datenbestände dadrin<br />
speichern – wie herausgestellt, ist dieser Prozess durch den Bezeichner “seeding” beschrieben. In<br />
diesem Fall werden die ursprünglichen Elementen des Datenmodells in der Datenbank mittels DML