개발 이야기/ORM2012.04.15 12:36

NHibernate 들어가기

오픈소스 ORM 프레임워크에서 손에 꼽히는 Hibernate 프레임워크에 대해서 알아보려 합니다. NHibernate는 Hibernate 닷넷 버전으로 NHibernate 경우 다양한 DBMS를 지원함으로 많은 프로젝트에서 ORM 프레임워크로 활용 되고 있습니다.

 

NHibernate 소개

NHibernate 공식 사이트 http://nhforge.org

메인 화면에서 관련 파일을 다운로드 받을 수 있습니다. NHibernate 3.1.0까지 릴리즈 되었네요!

16_01.JPG

[그림 16-1] NHibernate 공식 사이트

 

NHibernate Overview

NHibernate는 매우 높은 수준의 아키텍처입니다응용프로그램과 NHibernate사이에 영속 객체(Persistent Objects) Entity Framework 4.0에서 추가된 영속성을 지원하기 위한 객체입니다객체와 데이터베이스 테이블 간의 매핑을 XML로 관리합니다.

16_02.jpg

[그림 16-2] NHibernate 아키텍처

 

좀 더 구체적으로 살펴보겠습니다.

16_03.jpg

[그림 16-3] NHibernate Layer

 

ISessionFactory (NHibernate.ISessionFactory)

threadsafe 캐시로 단일 데이터베이스를 사용하는 경우 컴파일된 매핑을 캐시하여 사용가능하면 ISessionIConnectionProvider의 클라이언트를 위한 factory입니다.

 

ISession (NHibernate.ISession)

ISession을 통해서 단일 스레드는 응용프로그램과 영속 저장소 사이에서 존재하게 됩니다. ADO.NET Connecttion을 랩핑하고ITransaction을 위한 factory로 보시면 됩니다.

 

Persistent Objects and Collections

영속성 상태나 비지니스 함수를 포함하는 단일 스레드 객체로 짧게 살아있는 객체를 담고 있다이는 세션이 닫히면 응용프로그램 레이어에서 분리되어 자유롭게 가능합니다.

 

Transient Objects and Collections

ISession과 관련되지않는 영속 클래스의 인스턴스를 말한다.

 

ITransaction (NHibernate.ITransaction)

선택사항이며 ADO.NET transaction 밑에서 사용됩니다. ISession는 몇몇 상황에서 ITransactions을 걸치게 됩니다.

 

IConnectionProvider (NHibernate.Connection.IConnectionProvider)

이 또한 선택사항이며 ADO.NET의 connection과 command를 위한 factory입니다응용프로그램에 노출되지않지만 개발자에 의해 확장 구현 가능합니다.

 

IDriver (NHibernate.Driver.IDriver)

선택사항이며 ADO.NET provider 사이에서 캡슐화 인터페이스를 제공합니다.

 

ITransactionFactory (NHibernate.Transaction.ITransactionFactory)

선택사항이며 ITransaction 인스턴스를 위한 factory입니다. IConnectionProvider와 마찬가지로 응용프로그램에 노출되지않지만 개발자에 의해 확장 구현 가능합니다.

 


sqler에 아티클 작성 했던것을 공유합니다.

출처 : http://www.sqler.com/401779

Posted by 사나에