Ora che è pubblico il mio ultimo sforzo produttivo, posso fare due cose: la prima è il tornare a bloggare, e la seconda dire due parole con una certa cognizione di causa a proposito di NHibernate e più estensivamente a proposito degli ORM. L'occasione mi è data dall'aver lavorato sul sito di XE.NET utilizzando NHibernate, sul quale è basato cuyahoga che a sua vota è appunto base per il sito.

Inutile dire che NHibernate è magico. Mappi una classe e ti dimentichi (quasi) che questa in realtà è persistente su un database, ti dimentichi persino di che database si tratta e questo, a mio parere, è sia il suo maggior pregio che il suo peggior difetto.

Il fatto è che a me fa anche piacere non dover scrivere SQL (che per inciso adoro), però poi ho il timore che il dimenticarmi che sto lavorando con un database mi porti ad abusarne. Mi spiego meglio: quando scrivo una stored procedure che elabora qualcosa e restituisce dei risultati so sempre esattamente quante volte questa verrà chiamata e addirittura posso decidere di scrivere delle procedure studiate appositamente per evitare troppi roundtrip. Con nhibernate questa sensazione si perde. Sai che stai prelevando o scrivendo dati su un database, ma non sai mai esattamente quanto lo stai impegnando e questo a mio parere è un grave problema che deve essere considerato attentamente. Lo so, Nhibernate ha i meccanismi di cache per evitare troppe chiamate al database, ma sapete bene quanto me che la cache per quanto ben fatta, ha comunque un limite e non può essere considerata panacea di tutti i mali.

Detto questo comunque la mia sensazione è del tutto positiva. Credo di dover trovare il mio modo di usare NHibernate, inventandomi qualche cosa che mi restituisca almeno in parte la padronanza di un mezzo di cui non vorrei perdere il controllo. Però è assodato che prossimamente i miei progetti (ne ho uno in cantiere da un po'... ) godranno di questo strumento.

Il mio consiglio quindi è di provarlo perchè se tra i requisiti di una applicazione c'è (e quando non è così?) anche un tempo di sviluppo ridotto, allora NHibernate è il vostro migliore amico.

powered by IMHO 1.3


per leggere il post originale o inviare un commento visita il seguente indirizzo: Nhibernate... ora vi posso dire qualcosa