Oggi in Microsoft, dopo la sessione di Andrea,
chiacchieravo un po' con il simpaticissimo Janky ed è venuto
fuori un concetto che forse a molti sembrerà scontato, ma che spesso non lo è:
realizzare un buon Data Access Layer è qualcosa di *dannatamente*
complesso. Ma tanto, eh!!
E l'aggravante è che, purtroppo, questa caratteristica è difficilmente
identificabile da chi si avvicina per le prime volte alle metodologie di
sviluppo object-oriented e all'utilizzo dei patterns (e, OVVIAMENTE,
tale categoria comprende anche il sottoscritto): il primo pensiero è che basta
buttar giù due query, utilizzare i resultset per costruire entity piuttosto che
riempire DataSet ed è tutto fatto.
In realtà, secondo me, non è tutto così semplice: se sviluppo
utilizzando un Domain Model, come ho già detto in un post precedente, lo faccio
perché la complessità dell'applicazione lo richiede. Ed in questo caso, ad
esempio
- è necessario tener traccia delle modifiche che apporto alla mie entity
finché queste sono in memoria (Unit of Work)
- è necessario caricare i dati solo quando effettivamente ci servono (Lazy Load)
- è necessario gestire in un certo modo le relazioni master-detail (se ci
pensate, non è scontato dire che se dalla collection di dettagli della mia
entity Fattura rimuovo un DettaglioFattura , le corrispondenti righe su DB
devono essere eliminate, perché questa entity DettaglioFattura a conti fatti
non ha subito alcuna modifica)
- sarebbe bene evitare di restituire diverse istanze della stessa business
entity (Identity Map)
- dobbiamo gestire la concorrenza, il mapping, l'ereditarietà
delle classi, ecc.ecc.ecc...
Dove voglio arrivare? Beh, voglio arrivare a dire che, a conti fatti, spesso
e volentieri è assolutamente consigliabile avvalersi di un ORM per
realizzare un buon DAL (facciamo "quasi necessario"?). Oltre a semplificarci di
molto la vita, infatti, ci permettono di apprezzare in anticipo le
caratteristiche che ho elencato qualche riga più in alto, imparando a
conoscerle, a comprenderne le motivazioni ed evitando magari di renderci conto
della loro necessità solo perché, dopo un po' che ci lavoriamo, ci ritroviamo ad
avere un DAL fatto a mano che in realtà non funziona bene come ci saremmo
aspettati.
powered by IMHO 1.3