Castle 프로젝트에서 관리하는 Active Record 와 NHibernate 는 ORM 프레임워크이다.
Active Recored 는 Active Record Pattern 을 따르는 프레임워크이며, Fluent NHibernate와 더불어 많이(?) 사용되는 ORM Mappding 도구지만 국내에는 아직 활성화되지 않거나 정보에 대한 노출이 적다.
그럼으로 혼자 맨땅에 헤딩하면서 해야한다. -_-;
NHibernate 프레임워크도 ORM 도구지만 약간 다르게 봐야 하는것이 Active Record( 이하 AR) 는 Nhibernate의 Built in 이라고 보면
된다. 즉, NHibernate의 xml mapping 방식을 클래스 기반 Attribute 로 가능하도록 하여 보다 직관적이고 xml 편집으로 인해 발생할 수
있는 오타나 잘못된 코드를 미연에 방지 할 수 있도록 제작된 도구이다.
자세한 역사나 기능은 스스로 구글링을 통해 확인하기로 하고 .... 이 두 도구를 이용하여 Web 프로젝트를 제작하기 위해선 다음의 단계
를 순서대로 이행하여야 한다.
1. AR를 다운받는다. (Hibernate 도 다운받는다.)
Active Record Download
NHibernate Download
2. 웹 프로젝트를 개설하고, Castle.ActiveRecord.dll 과 NHibernate.dll 참조 추가한다.
(실제로 구동하기 위해서 Castle.Core.dll 과 Castle.Components.Validator.dll 도 요구될 수 있다.)
지연 로딩을 위해서 개인적으로 NHibernate.ByteCode.Castle.dll 을 추가 참조하였다.
3. Web.Config 에 해당 어셈블리를 이용하기 위해 섹션을 등록하고, 해당 노드를 구현한다.
4. Global.ascx 의 Application_Start() 메소드에 다음을 구현한다.
5. 비즈니스 오브젝트를 만들고, Active Record에서 제공하는 Mapping Attirubute를 지정한다.
나머진 다음에.....
Active Recored 는 Active Record Pattern 을 따르는 프레임워크이며, Fluent NHibernate와 더불어 많이(?) 사용되는 ORM Mappding 도구지만 국내에는 아직 활성화되지 않거나 정보에 대한 노출이 적다.
그럼으로 혼자 맨땅에 헤딩하면서 해야한다. -_-;
NHibernate 프레임워크도 ORM 도구지만 약간 다르게 봐야 하는것이 Active Record( 이하 AR) 는 Nhibernate의 Built in 이라고 보면
된다. 즉, NHibernate의 xml mapping 방식을 클래스 기반 Attribute 로 가능하도록 하여 보다 직관적이고 xml 편집으로 인해 발생할 수
있는 오타나 잘못된 코드를 미연에 방지 할 수 있도록 제작된 도구이다.
자세한 역사나 기능은 스스로 구글링을 통해 확인하기로 하고 .... 이 두 도구를 이용하여 Web 프로젝트를 제작하기 위해선 다음의 단계
를 순서대로 이행하여야 한다.
1. AR를 다운받는다. (Hibernate 도 다운받는다.)
Active Record Download
NHibernate Download
2. 웹 프로젝트를 개설하고, Castle.ActiveRecord.dll 과 NHibernate.dll 참조 추가한다.
(실제로 구동하기 위해서 Castle.Core.dll 과 Castle.Components.Validator.dll 도 요구될 수 있다.)
지연 로딩을 위해서 개인적으로 NHibernate.ByteCode.Castle.dll 을 추가 참조하였다.
3. Web.Config 에 해당 어셈블리를 이용하기 위해 섹션을 등록하고, 해당 노드를 구현한다.
<configSections>- web에서 사용하기 위해선 activeRecord 노드의 isWeb="true"를 반드시 설정해야한다.
<section name="activeRecord" type="Castle.ActiveRecord.Framework.Config.ActiveRecordSectionHandler, Castle.ActiveRecord" />
</configSections>
<activeRecord isWeb="true">
<config>
<add key="connection.driver class" value="NHibernate.Driver.SqlClientDriver"/>
<add key="dialect" value="NHibernate.Dialect.MsSql2008Dialect"/>
<add key="connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>
<add key="proxyfactory.factory_class" value="NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle" />
<add key="connection.connection_string" value="Data Source=119.205.211.227;initial catalog=LearningManagementSystem;User Id=sa;Password=ilat71###"/>
</config>
</activeRecord>
4. Global.ascx 의 Application_Start() 메소드에 다음을 구현한다.
Castle.ActiveRecord.Framework.IConfigurationSource source
= System.Configuration.ConfigurationManager.GetSection("activeRecord")
as Castle.ActiveRecord.Framework.IConfigurationSource;
Castle.ActiveRecord.ActiveRecordStarter.Initialize(typeof(LMSEngine.Models.Company).Assembly, source);
5. 비즈니스 오브젝트를 만들고, Active Record에서 제공하는 Mapping Attirubute를 지정한다.
[ActiveRecord("[companies]")]
public class Company : ActiveRecordBase<Company>
{
[PrimaryKey(Column="CompanyId")]
public string Id { get; set; }
[Property]
public string CompanyName { get; set; }
[BelongsTo(Column="CompanyId")]
public string CompanyGroup { get; set; }
[HasMany(typeof(Member),
Table = "[companies]",
Inverse = true,
ColumnKey = "CompanyId",
Cascade = ManyRelationCascadeEnum.AllDeleteOrphan)]
public IList<Member> Members { get; set; }
}
나머진 다음에.....
'개발 > NHibernate' 카테고리의 다른 글
[NHibernate] one-to-one 설정시 N+1 Select 문제.... 쿨럭~~ (2) | 2011.09.09 |
---|---|
(N)하이버네이트 프레임워크에 대한 오해와 도입이 가져다주는 장점에 대한 고찰! (0) | 2011.07.16 |
Hibernate Performace Tuning (0) | 2011.02.17 |
NHibernate Query Exsamples. (0) | 2010.09.10 |
Databases supported by NHibernate (0) | 2010.09.09 |