- Active record (motif de conception)
-
Active record (patron de conception)
En génie logiciel, le patron de conception (design pattern) active record (enregistrement actif en anglais) est une approche pour lire les données d'une base de données. Les attributs d'une table ou d'une vue sont encapsulés dans une classe. Ainsi l'objet, instance de la classe, est lié à un tuple de la base. Après l'instanciation d'un objet, un nouveau tuple est ajouté à la base au moment de l'enregistrement. Chaque objet récupère ses données depuis la base; quand un objet est mis à jour, le tuple auquel il est lié l'est aussi. La classe implémente des accesseurs pour chaque attribut.
Une des implémentations les plus utilisées est celle de la classe
ActiveRecord
de Ruby on Rails. Par exemple, s'il y a une tablepièces
définie par l'ensemble d'attributs {id, nom, prix}, et qu'il y a une classePièce
, le code Ruby suivant :a = Pièce.new a.nom = "Pièce test" a.prix = 123.45 a.save
va créer un nouveau tuple dans la base avec les valeurs correspondantes, et est exactement équivalent à la requête SQL suivante :
INSERT INTO pièces (nom, prix) VALUES ('Pièce test', 123.45);
Réciproquement, la classe peut être utilisée pour accéder à la base :
nompièce = "Pot catalytique" b = Pièce.find(:first, :conditions ⇒ [ "nom = ?", nompièce ])
va créer un objet à partir du premier tuple de la base dont l'attribut
nom
est égal à la variablenompièce
, et est exactement équivalent à la requête SQL suivante :SELECT * FROM pièces WHERE nom = 'Pot catalytique' LIMIT 1;
Le code aurait même pu être réduit :
b = Pièce.find_by_name("Pot catalytique")
Liens externes
- (en) La page Active Record du catalogue Patterns of Enterprise Application Architecture de Martin Fowler
- (en) Ruby on Rails API, inclut la documentation de la classe
ActiveRecord
- (en) Castle Project Active Record, une implémentation .NET
Catégorie : Patron de conception
Wikimedia Foundation. 2010.