Prima di spiegare "cosa è NHibernate" è a mio avviso più interessante spiegare cosa non è, in modo da evitare possibili confusioni. NHibernate non è una libreria da usare per evitare la scrittura di codice SQL per accedere ad un database; se avete infatti una struttura già pronta e pensate di scrivere una classe per ogni tabella per gestire l'accesso ai dati, allora tanto vale utilizzare il Dataset Strongly Typed di ADO.NET, che ha indubbiamente il vantaggio di essere maggiormente integrato nel sistema di sviluppo.
NHibernate è un ORM, acronimo che sta per Object Relational Mapper, ovvero una libreria in grado di mappare oggetti su Database Relazionali e viceversa. In pratica un ORM implementa il pattern Data Mapper [POEAA-DM] ed è in grado di gestire la persistenza di oggetti, termine che indica genericamente l'operazione di salvataggio dello stato dell'oggetto su un supporto stabile.
La necessità di un ORM nasce dall'intrinseca differenza tra il modello relazionale è quello ad oggetti; quest'ultimo infatti ha concetti come ereditarietà, polimorfismo, relazioni bidirezionali ed altre che non hanno una controparte nel mondo relazionale dei database. Per questa ragione, se si ha la necessità di gestire la persistenza su database relazionali, è consigliabile appoggiarsi ad una libreria che si occupi di gestire nella maniera più trasparente possibile le trasformazioni necessarie tra questi due mondi.
Gli ORM in generale sono indispensabili quando l'architettura della propria applicazione è fortemente basata sul Domain Model [POEAA-DDD] [DDD] e quindi si modella la logica di business con tutti i paradigmi dell'Object Orientation. Questo processo è il più adatto per un ORM, si parte infatti dal modello ad oggetti ed in base ad esso si crea una struttura di Database dedicata per gestirne la persistenza. Il processo inverso, partire da uno schema di database preesistente e da questo arrivare al modello ad oggetti è meno ideale, ma anche in questo caso un ORM mostra la sua potenza, dato che permette di evitare la dicotomia un oggetto una tabella, che chiaramente finisce per creare un insieme di oggetti strutturati secondo il modello relazionale, andando cosi a perdere la flessibilità di una struttura pienamente OO. Vediamo ora un primo semplice esempio che permetterà di familiarizzare con NHibernate.
Guida Windows Azure Code SnippetsLe migliori pratiche per far girare le applicazioni "in the cloud",... |
Guida ASP.NET MVC Best PracticesUn workflow dettagliato e ricco di suggerimenti pratici per... |
Guida ASP.NET Starter KitUn modo semplice per imparare ad utilizzare le tecnologie Microsoft... |
Ogni giovedì, direttamente nella tua e-mail: articoli, guide, tutorial e script ASP, ASP.Net, SQL server e IIS.
Iscriviti alla newsletter
|
|
Corso Progettazione database11 Maggio 2012 a Milano |
|
|
Amministratore di Reti Windows Server 200811 Giugno 2012 a Milano |
|
Nessun corso previsto |