How many times have you heard the words: "NHibernate writes better SQL than I do"? I've heard those words a number of times, mostly from people who proud themselves for being masters of domain driven development. So what's wrong with that statement? It's actually pretty accurate. People who would say something like that probably do write bad SQL, so it is very likely that a framework would write better SQL than them. But there's an often overlooked fact hiding in that statement, one that demands architectural consideration. And that is, not only is NHibernate writing SQL for the developer, it's doing it at runtime. For an architect, that's a game-changer.