Build a robust and scalable data access layer using NHibernate’s features and practical wisdomUse patterns such as specification and query object to make data access layer maintainable and extensibleWork effectively with legacy databases using lesser known NHibernate featuresThis book targets .NET developers who have never used an ORM before, developers who have used an ORM before but are new to NHibernate, or have used NHibernate sparingly and want to learn more about NHibernate.Map domain entities to a database schema using the different mapping mechanisms availableConfigure NHibernate through XML configurationSave, update, and delete entities in the database and query data from a database using different querying methodsOptimize database operations for speed and memory consumptionUse NHibernate in real-life software projectsGet to know about data access patterns such as repository, specification, and query objectUse NHibernate with legacy databasesConnecting the object-oriented world of .NET to the relational world of databases has always been fiddly but with the onset of ORMs such as NHibernate, developers have finally got some relief in this area.You will begin with a bird’s eye view of NHibernate, touching upon its core concepts. You will define domain model and map it with database schema using different techniques. You will then look into multiple ways of storing domain entities in a database and learn important concepts such as transitive persistence, transactions and unit of work. This will be followed by retrieving data from database. Next, you will optimize your code, explore concepts such as the onion architecture, and learn where NHibernate fits best in an application’s architecture. After introducing a well-known repository pattern into our application, you will learn to deal with legacy databases. We will conclude with infrequently used features such as stateless sessions, the second level cache, concurrency, and so on, which might come handy.