WaYdotNET Web Blogs

Il blog di Carlo Bertini e qualcosa di .NET
posts - 57, comments - 407, trackbacks - 1041

Simple NHibernate Architecture

By Cassio Alves.

Introduction

I started using NHibernate at the end of last year and I am having a wonderful experience with it. The simple fact that I don't have to maintain hundreds of procedures and data access abstraction classes to do basic CRUD operations is enough to justify the use of NHibernate (even though I used a custom code generation tool). Besides that, my code is amazingly clearer and simpler. I only need to worry about business and user interface logic now. All that pluming code has gone for good.

I had zero experience with ORM frameworks, so on the first couple of weeks using NHibernate I had a hard time with some issues, like using it with ASP.NET disconnected objects and abstracting NHibernate sessions from the domain layer. After putting in some effort I came out with a nice architecture that abstracts the NHibernate layer and allows me to work with an ASP.NET session.

Background

I am assuming you already have some familiarity with NHibernate. If you are new to NHibernate I encourage you to go to the website and download the reference documentation. I am using NHibernate 1.2 CR1 in this article.

The Architecture

The idea here is to keep my business objects unaware of an NHibernate session. So I created a different project for NHibernate stuff, called Shared.NHibernateDAL. It includes the session and transaction manager classes. I also created a common business object that serves as a base class for all my business entities. This class (BusinessObject) encapsulates the common methods and properties all entities that need to be persisted have, like Save(), Delete(), ID, etc.

Here's a class diagram just to give an idea:

Screenshot - nh_classdiagram.jpg

The Implementation

The main classes on the NHibernateDAL project are the following:

  • NHibernateSessionManager – This is the class responsible for managing the NHibernate session. I've got this class from another NHibernate article on Code Project.
  • TransactionBlock – This is a class I created to manage transactions and abstract it from NHibernate. I will show an example of its use further on this article.
  • BusinessObject<T> - This is the base class for all the business entities I need to persist. It implements the basic CRUD methods.

 

LINK: http://www.codeproject.com/aspnet/NHibernateArchitecture.asp

Print | posted on venerdì 27 aprile 2007 17.14 |

Feedback

Gravatar

# re: Simple NHibernate Architecture

kraloyun
kral oyun
oyun
oyunlar
kraloyun
kral oyun
oyun
oyunlar
blog
blogcu
kido
azbuz
facebook
arkadaş
flash games
fotoput
youtubeASXC345
01/06/2008 17.48 | kraloyun
Gravatar

# Jenna jameson.

Jenna jameson free. Jenna jameson galleries. Jenna jameson. Jenna jameson pics. Jenna jameson free movies. Xondemand jenna jameson.
20/09/2008 23.04 | Jenna jameson.
Gravatar

# Iron doors

Substantially, the article is really the best on this laudable topic. I concur with your conclusions and will eagerly look forward to your future updates. Just saying thank you will not just be enough, for the wonderful lucidity in your writing. I will instantly grab your rss feed to stay abreast of any updates. Gratifying work and much success in your business endeavors!
18/11/2011 11.41 | Iron doors

Post Comment

Title  
Name  
Email
Url
Comment   
Please add 8 and 3 and type the answer here:

Powered by: