You might wonder why I chose NHibernate. Well, it's not because NHibernate is necessarily the best solution available. What is the best car? That's a silly question, right? It's always the standard answer: "It depends."
These are my motivations for choosing NHibernate for this chapter:
In no way is this chapter intended to be an exhaustive guide to NHibernate. The purpose is just to make the discussions in Chapter 8 less abstract. I will also avoid getting into enumerating feature after feature; that's not very interesting, and that aspect of this book wouldn't be current for more than a few weeks after writing this chapter.
A possible effect, although not one of my main intentions, might be that the chapter could easily be written for any other Persistence Framework as well, therefore making it a little easier to compare different solutions. Let's see if that happens. (Hopefully there will then be a separate section entitled "What else should have been included in the comparison?".)
I will also not be discussing NHibernate in the context of an abstraction layer, such as NWorkspace [Nilsson Workspace]. The focus here will be on NHibernate itself and its API.
Let's start with an introduction to NHibernate.