Io sono un amante dell' ORM, avendone fatto uso pesantemente da 4-5 anni. Fino a quest' anno ho usato anche spesso NHibernate (4-5 progetti) consigliandolo spesso anche ad altri.
Ma ultimamente mi sono capitati alcuni progetti critici per aziende importanti con .NET 2.0/3.0 dove ho dovuto sconsigliare NHibernate, perche' non e' piu' al passo, e' ancora in beta 1 anno dopo .NET 2.0.
Invece, ho proposto un ORM commerciale (IMHO molto piu' avanzato di NHibernate: p.es no file di config, solo reflection con caching) , frallaltro Made in Italy che ha una grande storia tecnologica alle spalle e fatto da una persona che di OO ne capisce tanto. Costoso si, ma aggiornatissimo, maturato in 3 generazioni di tecnologie OO e sul campo da diverse societa' di rilievo, e poi ci ho pure dato un contributo personale diversi anni fa.
Dove, insieme al prodotto arriva supporto, accesso al codice, formazione e anche features su richiesta. E l'autore si sveglia pure di notte se c'e' un problema critico.
Insomma, (quasi) tutto perfetto per un' applicazione missional critical e per evitare di essere inseguito da un dirigente con l'ascia dopo aver detto : " ma e' gratis, e' open source, lo usano tutti "
Insomma le alternative sono : a casa propria a smanettare con la(e) beta o dal cliente con un progetto reale in mano ....
EDIT: da http://www.javaperformancetuning.com/news/interview041.shtml : Gavin King, Fondatore del progetto Hibernate
"The main example of where ORM - and indeed Java - is not suitable is the case of processing data in bulk. It is simply never going to be efficient to fetch millions of rows from the database, into your JVM, and then update them one at a time. Don't use Java for this. Use a stored procedure. "