- Active Record
-
In der Software-Entwicklung ist Active Record ein Architekturmuster für objektorientierte Software die Daten in einer Relationalen Datenbank speichert.
Inhaltsverzeichnis
Wirkungsweise
Benannt 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.
Implementierungen
Es gibt zahlreiche Software Frameworks die das Active Record Muster implementieren. Wenn es z.B. eine Datenbanktabelle
produkte
mit den Spaltenname
undpreis
gibt, und das Active Record Muster als KlasseProdukt
implementiert ist, dann erzeugt der folgende Pseudo-Code eine neue Zeile in der Tabelleprodukte
mit den gegebenen Attributen.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
auch verwendet werden um ein Produkt zu laden:produkt = Produkt.findFirst("name", "Beispielprodukt")
Das erzeugt ein neues
Produkt
-Objekts, das dem ersten Produkt aus derprodukte
Tabelle entspricht, das den Namen "Beispielprodukt" hat. Das entsprechende SQL dazu könnte z.B. so aussehen:SELECT * FROM parts WHERE name = 'Beispielprodukt' LIMIT 1; -- MySQL oder PostgreSQL
Einzelnachweise
- ↑ Martin Fowler: Patterns of enterprise application architecture. Addison-Wesley 2003, ISBN 978-0-321-12742-6
Weblinks
Wikimedia Foundation.