ActiveRecord – un ORM per Ruby

13 maggio 2008

In questo articolo parliamo di ActiveRecord, una libreria scritta in Ruby da David Heinemeier Hansson per l’accesso alle basi di dati. Più correttamente si tratta di un design pattern originariamente pubblicato da Martin Fowler nel suo libro Pattern of Enterprise Application Architecture, edito da Addison-Wesley nel 2002, di cui il creatore di Rails ha fornito una implementazione in Ruby, rendendola poi parte integrante del core di Rails.

ActiveRecord stesso implementa al suo interno un altro pattern molto utile: il Single Table Inheritance. Come si legge dal libro di Fowler: «i database transazionali non supportano l’ereditarietà, pertanto quando si esegue il mapping da oggetti al database è necessario considerare come rappresentare l’ereditarietà delle strutture in tabelle relazionali. Il pattern STI mappa tutti i campi di tutte le classi di una struttura di eridità in una singola tabella»

L’idea alla base di ActiveRecord é quella alla base di un ORM, acronimo di Object-relational mapping, cioè una ragionevole rappresentazione in codice object-oriented che vede le tabelle del db diventare classi, le righe diventare oggetti ed i campi delle tabelle diventare attributi.

Rispetto agli ORM classici presenta dei vantaggi non indifferenti, enfatizzando l’idea di configurazione guidata da convenzioni, in modo da fare delle assunzioni di default senza la necessitá di dover specificare le convenzioni da utilizzare, o di scrivere file di configurazione o ancora dettagliare il mapping.

Riportiamo qualche esempio in tal senso:

  • tutte la tabelle presentano una chiave primaria artificiale chiamata “id”, senza tralasciare, ovviamente la possibilità di sovrascriverla tramite la sequenza di istruzioni
    	:primary_key => mykey
    	:id => false                    
    
  • il nome della tabella corrisponde alla forma plurale del nome della classe modello
  • gli attributi dei nostri oggetti, che sono poi i campi delle tabelle, sono automaticamente letti dalla base di dati, senza la necessità di dover ripetere gli schemi.

ActiveRecord è stato principalmente designato per eseguire le operazioni tipiche che vanno sotto l’acronimo di CRUD (Create-Read-Update-Delete) in modo molto semplice, veloce e senza la necessità di dover scrivere codice SQL.

Elenchiamo alcuni dei vantaggi derivanti dall’uso di ActiveRecord ed usiamo l’elenco per definire la roadmap da seguire nel corso dell’articolo:

  • semplificazione della configurazione
  • mapping automatico tra tabelle e classi e tra colonne ed attributi
  • validazione dei dati
  • logging
  • migrations
  • aggregazione

C’è da considerare che ActiveRecord è scritto in Ruby, quindi tutto ció che é possibile fare con gli oggetti in Ruby, risulta fattibile con ActiveRecord e, questo risulta essere una grande potenzialità

Iniziamo ora il nostro cammino partendo dall’installazione di ActiveRecord, passando poi ad esaminare alcune caratteristiche che lo rendono realmente differente da altri ORM e, ove possibile, mostrando qualche breve esempio.

Se vuoi aggiornamenti su ActiveRecord - un ORM per Ruby inserisci la tua e-mail nel box qui sotto:
 
X
Se vuoi aggiornamenti su ActiveRecord - un ORM per Ruby

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy