Active RecordV počítačové vědě je Active Record architektonický návrhový vzor pro práci s datovými zdroji, který v roce 2002 publikoval Martin Fowler ve své knize Patterns of Enterprise Application Architecture: „Objekt, který obsahuje řádek v databázové tabulce nebo pohledu, zapouzdřuje přístup k databázi, a přidává doménovou logiku.“ Implementace tohoto vzoru je obvykle objekt, který nese jak chování, tak data, přičemž mnoho těchto dat má perzistentní podobu a potřebuje být uloženo v databázi. Většinou je to třída odvozená od bázové třídy, která implementuje potřebné rozhraní pro persistenci objektu – typicky CRUD metody (vytvoření, čtení, aktualizace a odstranění). Relační data jsou obstojně reprezentována jako objektově-orientovaný kód, kde databázové tabulky odpovídají třídám, řádky tabulek objektům (instancím tříd) a nakonec jednotlivá pole řádků atributům objektu. Základem návrhového vzoru Active Record je doménový model, kde třídy odpovídají tabulkám v databázi. Každý objekt Active Record je pak zodpovědný za ukládání dat do a načítání dat z databáze, stejně jako za dodržování doménové logiky aplikované na samotná data. Třída implementující vzor Active Record typicky umožňuje:
person = new Person(); person.name = 'John'; person.surname = 'Doe'; person.age = 37; person.save(); Uvedený pseudokód, převedením na příkaz jazyka SQL, vloží do tabulky nový záznam. Třída john = Person.find('surname', 'Doe');
ImplementaceS implementací návrhového vzoru Active Record se můžeme setkat u mnoha programovacích jazyků. Patrně nejznámější je knihovna Active Record pro jazyk Ruby, kterou nalezneme ve frameworku Rails (Ruby on Rails). Ta není založena čistě na objektovém modelu, ale na principu obalování databázových záznamů. Knihovna spoléhá na koncept „konvence před konfigurací“, proto se předpokládá, že názvy databázových tabulek jsou v množném čísle dle angličtiny (např. people) a doménové třídy poté v jednotném čísle (např. Person). Doménové třídy odvozené od třídy Implementace pro jazyk .NET se nazývá Castle ActiveRecord. Je postavena nad ORM frameworkem NHibernate, jehož chování zcela neodstiňuje, v mnoha ohledech práci s NHibernate však zjednodušuje. Pro jazyk PHP existuje několik knihoven založených na návrhovém vzoru Active Record. Ty lze nalézt jako standardní součást PHP frameworků (například Yii, Zend Framework), nebo jako samostatnou knihovnu, integrovatelnou do jiné PHP aplikace. Reference
Externí odkazy
Související články |