NHibernate
There are 7 entries for the tag
NHibernate
Non mi stancherò mai di decantare la versatilità di NHibernate nel supportare domain model eterogenei. Esempio pratico: il nostro sito internet ha un sacco di pagine pressoché statiche, tipo il classico "Chi siamo", "Mission dell'Azienda", ecc.ecc. Vogliamo permettere all'amministratore di inserire questi dati nel DB, ma vogliamo anche lasciarci la strada aperta ad aggiunte future, così se domani il cliente si sveglia e vuole anche una bella pagina con i contatti, possiamo aggiungerla senza modificare lo schema. Un'idea può essere quella di contenere tutti questi dati all'interno di un bel Dictionary, ma come lo mappiamo con NHibernate? Presto detto, basta...
Parlo di Cuyahoga, il noto CMS basato su Castle Windsor e NHibernate. Incuriosito da questo post di Ayende ieri ne ho spulciato un po' i sorgenti. E visto che li considero didatticamente interessanti, ve li consiglio. Certo, non è da prendere tutto come oro colato (il modulo del Forum, ad esempio, espone tutti i servizi in una grande, enorme, monolitica classe, che accede direttamente a NHibernate, brrrrr...) però può essere una buona sorgente per qualche idea. Tanto per dirne una, mi è piaciuta la strutturazione del Data Access Layer che sfrutta la "trasversalità" di NHibernate: IUserDao espone solo i servizi specifici dell'utente...
In questi giorni sto spulciando un pochino questo ORM e fino ad ora le mie impressioni sono senz'altro positive; LINQ to SQL, a mio modo di vedere, è un prodotto che ha dalla sua un'estrema produttività, almeno per un paio di ragioni: Intanto l'ottima integrazione con il designer di Visual Studio, che si interfaccia con la base dati e ci consente di modellare il dominio applicativo veramente in brevissimo tempo: la comodità del designer del DataSet applicata ad un Domain Model + ORM, praticamente il mio sogno La semplicità e la naturalezza di LINQ come linguaggio di...
Oramai non ne faccio più mistero: chiacchierare di NHibernate mi piace dannatamente, cercare di contribuire alla sua diffusione ancora di più, sfruttarlo per scopi professionali è poi una vera goduria. Fatto sta che ho rotto talmente le scatole a qualcuno, che alla fine abbiamo convenuto che era meglio mettere nero su bianco e vedere cosa si riusciva a tirar fuori. Risultato? Oltre le più rosee aspettative: un articolo introduttivo e *MOLTO* pratico, pubblicato oggi su Aspitalia.com, e addirittura uno speciale su quello che è un po' l'ORM del momento. Ringrazio tantissimo Daniele, Ricky, Ugo e Marco di Aspitalia.com che mi hanno supportato...
E' innegabile che, nell'ultimo anno, si faccia un gran parlare in rete di O/RM ed in particolare di NHibernate. Capita sempre più spesso di leggere un post qui, un articolo lì e soprattuto tante, tantissime domande su forum e newsgroup di persone in qualche modo affascinate o incuriosite da questo modo relativamente nuovo di gestire le problematiche di persistenza. Ciò che mi ha sempre colpito è come, a ragion veduta, in molti vedano in NHibernate un qualcosa che finalmente si occupa di scrivere SQL al posto nostro. Ma in realtà c'è molto, molto di più in quel dannato assembly, features che tante volte...
Come segnalato da Ayende, è oramai praticamente completo NHibernate.Search. Cos'è? E' l'integrazione con NHibernate del famoso full-text search engine Lucene. La documentazione non è ancora disponibile, ma il funzionamento è assolutamente analogo a quello della controparte Java, che si trova qui. Non vedo l'ora di dargli un'occhiata. Technorati tags: NHibernate
L'interfaccia ISession di NHibernate mette a disposizione due metodi per recuperare una entity da DB a partire dal suo identificativo, ossia ISession.Get e ISession.Load. La prima differenza che salta all'occhio è che, nel caso l'oggetto voluto non esista, Get ritorna una null-reference, mentre Load solleva una ObjectNotFoundException. Molto più importante, secondo me, è però il fatto che, nel caso in cui il tipo sia configurato come Lazy Initializable (quindi attributo Lazy="true" nel mapping della classe), Session.Load restituisce il proxy e non l'oggetto stesso. E' un aspetto molto comodo tutte le volte in cui abbiamo bisogno di una reference ad...