Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

ActiveRecord contro Data Mapper

Link copiato negli appunti

Sembra un'eterna lotta quella che mette a confronto i sostenitori di questi due pattern: se analizziamo le principali feature e problematiche dei due sistemi forse possiamo schiarirci le idee.

L'active record permette di mappare 1:1 un oggetto con la sua rappresentazione sul database: questo implica quindi, che le colonne a livello di DB, rappresentino gli attributi di un oggetto.

Il vantaggio di questo tipo di implementazione è, chiaramente, una barriera inferiore per l'adozione per paradigma di persistenza, nonché una grossa facilità , lato software, per persistere i dati da un oggetto al DB.

Doctrine 1.2 ha, per esempio, ottenuto grande attenzione proprio per l'implementazione molto chiara di questo pattern.

Il Data mapper invece, proposto nel PEAA, introduce un layer che si occupa di mappare un oggetto, aggiungendo metadati, senza alterarne la sua logica di dominio: questo permette di non infettare l'oggetto stesso con informazioni che non gli appartengono, come il modo in cui viene persistito.

In Doctrine2, questo viene raggiunto attraverso, per esempio, le annotations.

Un mapper introduce meno inquinamento nei propri oggetti e ne permette un testing unitario maggiormente facilitato: tutto questo al prezzo di gestire ed iniettare un'istanza unica del mapper nelle nostre applicazioni, pena l'inconsistenza della Unit Of Work.

àˆ chiaro come l'utilizzo di un data mapper sia ben più dispendioso (si pensi a Symfony2) e meno immediato di avere a disposizione un ORM con un'implementazione active record, col vantaggio, però, di avere un architettura e un dominio più puliti.

Al di là  delle semplificazioni (notevoli), che si devono fare in questo contesto, voi che idea vi siete fatti? Avete mai provato entrambe le implementazioni?

Ti consigliamo anche