dimmi che ORM usi....(e ti dirò chi sei)

Vediamo di stuzzicare la curiosità di quelli interessati a intraprendere le vie dell'ORM (e non).
Titolo esteso del post: Perchè NHibernate è meglio
Non sto qui a dirvi cosa è un'ORM ma ritengo sia importante almeno dare una classificazione.
Ottima quella di Fussell che nel 1997 vedeva già questa separazione

  • Light Object Mapping
    Entità sono rappresentate da classi e mappate manualmente sulle tabelle relazionali
    l'accesso ai dati è incapsulato in oggetti DAO e nascosto alle business logic class
    Uso di stored procedure
    Ottimo per applicazioni con basso numero di entità
  • Medium Object Mapping
    L'applicazione è progettata attorno ad un object model
    le istruzioni SQL sono generate in build time da un framework apposito
    L'associazione tra oggetti è supportata dal meccanismo di persistenza
    Gli oggetti possono essere cachati (non so come scriverlo in italiano!) sul layer di persistenza
    Nessun uso di stored procedure
  • Full Object Mapping
    Supporto di un sofisticato Object Model (Composizione, Ereditarietà, Polimorfismo)
    Il layer di persistenza implementa la cosiddetta persistenza trasparente cioè le classi non devono ereditare da nessuna classe base o implementare qualche tipo di interfaccia
    Strategia efficente di Fetching (caricamento Lazy e Eager Fetching)
    Linguaggio di interrogazione totalmente a oggetti

Secondo questa classificazione Nhibernate si colloca OVVIAMENTE sul terzo livello.
(Considerazione semiseria: per me il terzo livello glielo hanno fatto apposta)
Non ho ancora pronta la tabella comparativa dei vari ORM sul mercato (ovviamente sarà pronta per il seminario),
ma vi assicuro che sono pochi quelli che riescono ad arrivano a quel livello.

Ulteriori approfondimenti ovviamente....
Sempre qui
Scrivere meno codice usando blocchi già pronti? Si può: NHibernate e Enterprise Library! 

Print | posted on mercoledì 31 agosto 2005 10.42

Feedback

# re: dimmi che ORM usi....(e ti dirò chi sei)

left by Simone Chiaretta at 31/08/2005 10.53 Gravatar
Io sto or ora intraprendendo lo sviluppo di un SW opensource per la gestione di aziende vitivinicole, e, stavo appunto valutando l'uso di un ORM rispetto al tradizionale approccio 3-tier con DAL, DTO, ecc... con parte del codice generato da templates (codesmith).

La mia domanda è: se gli ORM sono così fighi, perchè i maggiori applicativi opensource (vedi DNN, rainbowportal, communityserver, ecc...) usano l'approccio tradizionale?

simone

# re: dimmi che ORM usi....(e ti dirò chi sei)

left by Andrea Boschin at 31/08/2005 10.57 Gravatar
manca un dato nei tre punti che esponi: che uso fa nhibernate di stored procedures? mi risulta che proprio non siano previste, e questo è uno dei punti che mi lascia più perplesso... però parlo da profano, dato che non ho mai provato nhibernate.

# re: dimmi che ORM usi....(e ti dirò chi sei)

left by Giancarlo Sudano at 31/08/2005 11.24 Gravatar
Per Simone:
Se parli solo di CMS la risposta per esempio è Cuyahoga. Per altro se non sbaglio recensito anche da Andrea Boschin in uno dei suoi post. Totalmente basato su NHibernate. Può lavorare su DB2, Oracle, SQL Server o altro solo cambiando una stringa.
Ma ovviamente NHibernate è ancora giovane come porting.
Perfettamente funzionante si ma giovane nel mondo .NET.
Parliamo invece di Java. Hibernate in quanti progetti è coinvolto? Te lo trovi praticamente ovunque in tutto il pianeta!

Per Andrea:
Non menziono le stored perchè un ORM di alto livello non le deve proprio toccare!! tutte le SQL sono generate a runtime (e ovviamente cachate). il perchè? alla base sta il concetto di persistenza. Con persistenza si intendono le operazioni semplicissime di CRUD e non elaborazioni complesse. Cerchero di essere più chiaro nel pomeriggio con un altro post (in pratica hai anticipato un altro argomento...grazie!)

# re: dimmi che ORM usi....(e ti dirò chi sei)

left by Andrea Boschin at 31/08/2005 11.36 Gravatar
attendo con ansia il tuo post "pomeridiano". in effetti qui i colleghi javisti "stravedono" per il pargoletto hibernate, che davvero usano a piene mani. il mio riferimento alle sp invece era relativo soprattutto al caso di sqlserver ove esse sono la base per un'applicazione dalle performance eccellenti. non che le sql siano da evitare del tutto, ma il caching dei piani di esecuzione delle sp da una marcia in più all'applicazione.
per questo ero tentato da ibatis (http://ibatis.apache.org) che da un po' è rilasciato anche in versione .NET. ibatis però sta almeno un livello più giù nel tuo schema, pur a prima vista potendo usare le sp.

# re: dimmi che ORM usi....(e ti dirò chi sei)

left by Simone Chiaretta at 31/08/2005 12.38 Gravatar
Giancarlo:
mi stai quasi convincendo a provare NHibernate per poi usarlo x Kea...
Peccato che il convegno (a pagamento.. sigh..) sia a Novembre... se aspetto fino a Novembre per fare il DAL di KEA andrei molto oltre la mia roadmap...

Cmq, fammi capire se ho capito... con NHibernate io faccio tutto normalmente, con la differenza che il DAL, invece che chiamare le sp, fa tutto in automatico... e che è "compatibile" con vari DB engine in automatico, invece che doversi fare 5 DAL per 5 DB diversi?

Addendo ansioso altre info su ORM.
Simo

PS: ma xè sto IHP mi fa sempre scrivere 3-4 volte il codice???

# re: dimmi che ORM usi....(e ti dirò chi sei)

left by Giancarlo Sudano at 31/08/2005 16.03 Gravatar
Simone:
Si, in NH il DAL è unico ed è configurabile per l'accesso a qualsiasi DB dall'esterno tramite app.config (o web.config) o in mille altri modi.
Ti anticipo che sto scrivendo un articolo per ugidotnet, un primer per NHibernate, e ci sarà molta roba sul fuoco.

# re: dimmi che ORM usi....(e ti dirò chi sei)

left by Simone Chiaretta at 31/08/2005 16.14 Gravatar
OK, bene
cerco di capirci qualcosa...
che compatibilià ha con .NET 2.0?

Simo
Comments have been closed on this topic.