<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Active_Record</id>
	<title>Active Record - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Active_Record"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Active_Record&amp;action=history"/>
	<updated>2026-05-28T14:09:34Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Active_Record&amp;diff=2334090&amp;oldid=prev</id>
		<title>imported&gt;SchlurcherBot: Bot: http → https</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Active_Record&amp;diff=2334090&amp;oldid=prev"/>
		<updated>2025-12-21T14:39:43Z</updated>

		<summary type="html">&lt;p&gt;Bot: http → https&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;In der [[Software-Entwicklung]] ist &amp;#039;&amp;#039;&amp;#039;Active Record&amp;#039;&amp;#039;&amp;#039; ein [[Entwurfsmuster]] für objektorientierte Software, die Daten in einer [[Relationale Datenbank|relationalen Datenbank]] speichert.&lt;br /&gt;
&lt;br /&gt;
== Wirkungsweise ==&lt;br /&gt;
[[Datei:Active Record.svg|mini|Beispiel für einen Active Record einer Person]]&lt;br /&gt;
Benannt wurde es von [[Martin Fowler]] in seinem Buch &amp;#039;&amp;#039;Patterns of Enterprise Application Architecture&amp;#039;&amp;#039;&amp;lt;ref&amp;gt;{{Literatur |Autor=Martin Fowler |Titel=Patterns of enterprise application architecture |Verlag=Addison-Wesley |Datum=2003 |ISBN=0-321-12742-0 |Online=http://books.google.com/books?id=FyWZt5DdvFkC&amp;amp;lpg=PA1&amp;amp;dq=Patterns%20of%20Enterprise%20Application%20Architecture%20by%20Martin%20Fowler&amp;amp;pg=PT187#v=onepage&amp;amp;q=active%20record&amp;amp;f=false}}&amp;lt;/ref&amp;gt;. 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).&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Active Record ist somit ein Objekt, das als [[Adapter (Entwurfsmuster)|Adapter]] ({{enS|wrapper}}) zu einer Zeile in einer Datenbanktabelle oder [[Sicht (Datenbank)|Datenbanksicht]] (engl. {{lang|en|&amp;#039;&amp;#039;view&amp;#039;&amp;#039;}}) 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.&lt;br /&gt;
&lt;br /&gt;
== Implementierungen ==&lt;br /&gt;
Es gibt zahlreiche Software[[framework]]s, die das Active-Record-Muster implementieren. Wenn es zum&amp;amp;nbsp;Beispiel eine Datenbanktabelle &amp;lt;code&amp;gt;produkte&amp;lt;/code&amp;gt; mit den Spalten &amp;lt;code&amp;gt;name&amp;lt;/code&amp;gt; und &amp;lt;code&amp;gt;preis&amp;lt;/code&amp;gt; gibt, und das Active-Record-Muster als Klasse &amp;lt;code&amp;gt;Produkt&amp;lt;/code&amp;gt; implementiert ist, dann erzeugt der folgende Pseudo-Code eine neue Zeile in der Tabelle &amp;lt;code&amp;gt;produkte&amp;lt;/code&amp;gt; mit den gegebenen Attributen.&lt;br /&gt;
&lt;br /&gt;
 produkt = new Produkt&lt;br /&gt;
 produkt.name = &amp;#039;Beispielprodukt&amp;#039;&lt;br /&gt;
 produkt.preis = 1.99&lt;br /&gt;
 produkt.save&lt;br /&gt;
&lt;br /&gt;
Das entspricht etwa dem [[SQL]]-Befehl:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 INSERT INTO produkte(name, preis) VALUES (&amp;#039;Beispielprodukt&amp;#039;, 1.99);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Umgekehrt kann die Klasse &amp;lt;code&amp;gt;Produkt&amp;lt;/code&amp;gt; auch verwendet werden, um ein Produkt zu laden:&lt;br /&gt;
 produkt = Produkt.find_by(name: &amp;#039;Beispielprodukt&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
Das erzeugt ein neues &amp;lt;code&amp;gt;Produkt&amp;lt;/code&amp;gt;-Objekt, das dem ersten Produkt aus der &amp;lt;code&amp;gt;produkte&amp;lt;/code&amp;gt;-Tabelle entspricht, das den Namen „Beispielprodukt“ hat. Das entsprechende SQL dazu könnte beispielsweise so aussehen:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;sql&amp;quot;&amp;gt;&lt;br /&gt;
 SELECT * FROM produkte WHERE name = &amp;#039;Beispielprodukt&amp;#039; LIMIT 1; -- MySQL oder PostgreSQL&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [https://github.com/rails/rails/tree/master/activerecord Active Records in Ruby]&lt;br /&gt;
* [https://www.phpactiverecord.org/ Active Records in PHP]&lt;br /&gt;
* [https://orator-orm.com/ Active Records in Python]&lt;br /&gt;
* [https://www.castleproject.org/projects/activerecord/ Active Records in .NET]&lt;br /&gt;
* [http://code.google.com/p/air-activerecord/ AIR Active Record Projekt]&lt;br /&gt;
* [https://github.com/HannesRammer/Dartabase Dart Active Record Project Dartabase]&lt;br /&gt;
&lt;br /&gt;
== Einzelnachweise ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{Navigationsleiste Entwurfsmuster}}&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Softwarearchitektur]]&lt;/div&gt;</summary>
		<author><name>imported&gt;SchlurcherBot</name></author>
	</entry>
</feed>