Guardando in questi giorni
Hibernate Tools, mi e' piaciuta molto l'idea che sta alla base della la sua architettura: il mapping viene rappresentato da un'istanza del
metamodello di Hibernate (classe
org.hibernate.cfg.Configuration o derivate, equivalente di
NHibernate.Cfg.Configuration) e da questo
modello vengono generati i vari artefatti tramite cosiddetti
exporter (per esempio
hbm2java,
hbm2ddl,
hbm2hbmxml, etc), che non sono altro che classi che derivano da
org.hibernate.tool.hbm2x.GenericExporter e che, insieme a dei template FreeMarker, definiscono in modo straordinariamente flessibile la parte di generazione codice/artefatti. Quindi, al posto della
POJOExporter potremmo avere, perche' no, anche una
POCOExporter per il domain model C#. Sarebbe interessante replicare in NHibernate un'infrastruttura simile, soprattutto adesso quando
la parte di generazione codice via template T4 si trova gia' inclusa in VS2008. E poi, se tutto questo viene generato da un'istanza di
Configuration, ci vuole solo un passo per creare un DSL grafico (con l'immenso aiuto di
DSL Tools) che rappresenti il mapping (N)Hibernate. E un po' quello che hanno fatto in Java con, per esempio,
Exadel Studio Pro, diventato adesso parte di
Jboss Developer Studio. Ma poi, i concetti di mapping sono quasi independenti dagli engine e quindi, perche' non pensare a un tool visuale capace di risolvere la parte mapping per piu' ORM?