Now that my my first NHibernate implementation is entering the QA stage, it's probably time to share some thoughts with you.
What went ok:
- there was practically no impact on the team due to the paradigm change;
- on the beginning, the artifact the team missed the most was the database diagram, that was deliberately substituted by the static class diagram; that database diagram lack was soon forgotten by whole of the team;
- the domain model was expressed with great ease;
- search forms were just easy and natural to develop;
- the lazyload mechanisms to transverse the domain model was used and abused whenever performance issues were not applicable;
- we lost the capability to override CRUD operations (ex: we can't just rewrite some class Add method, filling some data and calling base.Add);
- the OR/M performance overhead just can't be missed on bulk operations;
- we couldn't find the right software factory for this project, so we decided to develop some CodeSmith templates from scratch to facilitate the data dictionary to HBM, domain model and basic CRUD presentation code;