Active RecordIn der Software-Entwicklung ist Active Record ein Entwurfsmuster für objektorientierte Software, die Daten in einer relationalen Datenbank speichert. WirkungsweiseBenannt wurde es von Martin Fowler in seinem Buch Patterns of Enterprise Application Architecture[1]. Ein Objekt stellt nach diesem Muster in der Regel Schnittstellen zum Einfügen, Ändern und Löschen bereit. Diese beziehen sich dann direkt auf die zugrundeliegende(n) Tabelle(n). Active Record ist ein Ansatz, auf Daten zuzugreifen, die in einer Datenbank liegen. Zu einer Datenbanktabelle wird dabei eine entsprechende Klasse erstellt. Ein Objekt, bzw. eine Instanz dieser Klasse entspricht dann einer Zeile in der Tabelle. Das Erzeugen eines neuen Objekts führt demnach zu einer neuen Zeile in der Tabelle. Jedes Objekt, das geladen wird, bezieht seine Informationen aus der Datenbank. Wenn ein Objekt geändert wird, so wird auch die korrespondierende Zeile in der Tabelle geändert. Die Klasse implementiert Zugriffsmethoden für jedes Attribut, bzw. jede Spalte der Tabelle. Active Record ist somit ein Objekt, das als Adapter (englisch wrapper) zu einer Zeile in einer Datenbanktabelle oder Datenbanksicht (engl. view) dient. Der Adapter beinhaltet hierbei den Datenbankzugriff und Geschäftslogik für die Daten. Es handelt sich im Grunde um ein Row Data Gateway, das um die Geschäftslogik erweitert wird und deshalb sowohl Daten (Eigenschaften) als auch Verhalten (Methoden) implementiert. ImplementierungenEs gibt zahlreiche Softwareframeworks, die das Active-Record-Muster implementieren. Wenn es zum Beispiel eine Datenbanktabelle produkt = new Produkt produkt.name = 'Beispielprodukt' produkt.preis = 1.99 produkt.save Das entspricht etwa dem SQL-Befehl: INSERT INTO produkte(name, preis) VALUES ('Beispielprodukt', 1.99);
Umgekehrt kann die Klasse produkt = Produkt.find_by(name: 'Beispielprodukt') Das erzeugt ein neues SELECT * FROM produkte WHERE name = 'Beispielprodukt' LIMIT 1; -- MySQL oder PostgreSQL
Weblinks
Einzelnachweise
|