Ok, io e Janky non siamo d'accordo...

...E' evidente (ma lo sapevo :-) ). Da anni sostengo che i pattern non siano nè dogmi nè "la Forza", ma li paragono alle centurie di Nostradamus, poichè vanno interpretati. Chiunque, a partire dal famigerato workshop "Architecture & Management" di dicembre 2004, mi abbia sentito parlare di questo argomento si è "beccato" (e si sarà stufato, presumibilmente) di questa mia affermazione. Citando Fowler (non per "amore", bensì perchè dobbiamo pur basarci su una definizione), "the essence of an Active Record is a Domain Model in which the classes match very closely to the record structure of an underlying database". *Chi* o *cosa* effettui la persistenza non è determinante, poichè la capacità degli oggetti definiti in AR di "autopersistersi" è una caratteristica che (sempre stando a Fowler) è *tipicamente* (concetto differente da "sempre") implementata.

Poichè attribuire un significato "universale" alle espressioni "very closely" e "tipically" avrebbe una difficoltà, come dice un mio amico, pari solamente a quella di capire le donne, ho sempre definito AR come "il miglior object model che siamo in grado di far emergere dal database". Ovviamente, escludendo le implementazioni "manuali", il toolkit utilizzato è determinante il tal senso: Linq to SQL ha (ad esempio) un limitato supporto alla ereditarietà e capacità di mapping via xml, mentre CastleProject supporta i component, potendosi basare sull'engine di NHibernate. Entrambi permettono di modificare la struttura del grafo rispetto a quella del DB, quindi a voler essere fiscali dovremmo dire che entrambi non sono AR, ma... Mi sembrerebbe una tesi difficilmente sostenibile. Entrambi (meno male!) offrono ben di più del "minimo sindacale" previsto da AR, ma non mi sembrano paragonabili a NH o a EF.

Technorati Tags:

posted @ lunedì 26 novembre 2007 15.24

Print

Comments on this entry:

# re: Ok, io e Janky non siamo d'accordo...

Left by Raffaeu at 26/11/2007 15.40
Gravatar
Se il discorso è incentrato sulla 'teoria' beh allora fowler, per dare ragione a Janky, avrebbe dovuto scrivere 'the essence of an Active Record is a Domain Model in which the classes match very closely to the record structure of an underlying database and its behavior ...' poichè a parer mio, il metodo Save è un behavior del record e non una parte della struttura.

# re: Ok, io e Janky non siamo d'accordo...

Left by Marco De Sanctis at 26/11/2007 15.50
Gravatar
Secondo me l'AR di CastleProject si chiama AR perché le entity hanno i propri metodi di persistenza.

Ora, a prescindere dalla definizione di Fowler, credo che nell'accezione comune si intenda questo per AR. Anche perché "matches very closely" vuol dire tutto e non vuol dire nulla, perché se io ti dico: "Scusa Andrea, cosa ne dici se qui implementiamo un Active Record?" in realtà starei facendo una domanda alla Marzullo, perché ciò che è AR per te potrebbe non esserlo per me, che ne sai quanto una cosa può essere "very closely" per una persona...

E invece la discriminante sta proprio in quei metodi Save e Delete di fianco alle proprietà Codice e Descrizione. Ecco perché IMHO Linq to SQL *è* un ORM, magari meno versatile di NH, applicabile ad entity che "match very closely" lo schema relazionale sottostante, ma è e resta un ORM.

Che sia paragonabile all'AR inteso come *prodotto* di CastleProject, se non altro per l'immediatezza che passa tra il disegnare le entity e persisterle su un DB, è un altro paio di maniche.

# re: Ok, io e Janky non siamo d'accordo...

Left by Andrea Saltarello at 26/11/2007 16.07
Gravatar
Marco, proprio perchè "very closely" e "tipically" sono opinabili è possibile avere idee differenti: *per te* "la discriminante sta proprio in quei metodi Save e Delete", mentre *per me* AR è "il miglior object model che siamo in grado di far emergere dal database".
Chiamo a testimoniare... Marzullo! :-)

# re: Ok, io e Janky non siamo d'accordo...

Left by Lorenzo Barbieri at 26/11/2007 16.23
Gravatar
La vita è un sogno o i sogni aiutano a vivere meglio? :-D

Your comment:



 (will not be displayed)


 
 
 
Please add 1 and 5 and type the answer here:
 

Live Comment Preview:

 
«novembre»
domlunmarmergiovensab
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456