What Is NHibernate?
NHibernate is an open source ORM (Object-Relational Mapping) solution for .NET. For several years, Hibernate (notice the dropping of the “N”) has been making a name for itself in the Java world as a premier ORM solution for everyday database woes. Hibernate is a proven technology and is currently the standard approach to database architecture for enterprise applications for many top companies around the world.
With such a great solution, it was only a matter of time before Hibernate was ported to .NET and thus NHibernate was born. Although NHibernate is newer to the market and has not made as deep a penetration as its Java counterpart, NHibernate has all the major ORM features of Hibernate and is a solid and viable solution for ORM in the .NET world.
NHibernate implements the ORM concepts by providing a framework to map database tables to business objects using a standard XML format for each mapping and the database configuration. NHibernate is database independent, which means that the mappings are the same whether you are using a MS SQL, Oracle, DB2, or MySQL database. NHibernate also provides mapping solutions for a variety of object-oriented concepts such as inheritance, polymorphism, and the .NET collections framework including generic collections.
Before starting to develop a applications using nhibernate we need to understand the below interfaces,
ISession interface
The ISession interface is the primary interface used by NHibernate applications, it exposes NHibernates
methods for finding, saving, updating and deleting objects. An instance of ISession is lightweight and is
inexpensive to create and destroy. This is important because your application will need to create and destroy
sessions all the time, perhaps on every ASP.NET page request. NHibernate sessions are not thread safe and
should by design be used by only one thread at a time. This is discussed in further details in future s.
The NHibernate notion of a session is something between connection and transaction. It may be easier to
think of a session as a cache or collection of loaded objects relating to a single unit of work. NHibernate can
detect changes to the objects in this unit of work. We sometimes call the ISession a persistence manager
because it’s also the interface for persistence-related operations such as storing and retrieving objects. Note
that a NHibernate session has nothing to do with an ASP.NET session.
ISessionFactory interface
The application obtains ISession instances from an ISessionFactory. Compared to the ISession
interface, this object is much less exciting.
The ISessionFactory is certainly not lightweight! It’s intended to be shared among many application
threads. There is typically a single instance of ISessionFactory for the whole application—created during
application initialization, for example. However, if your application accesses multiple databases using
NHibernate, you’ll need a SessionFactory for each database.
VISIT MAIN ARTICLE,