본문 바로가기
연재/NHibernate

[챕터2] 프로젝트 시작하기

by 그저그런보통사람 2011. 7. 31.



이제 실제로 실무와 비슷하게 프로젝트를 진행하면서 하이버네이트의 사용법을 확인해보겠습니다. 
우선 개발 환경을 맞추는게 중요하겠죠?!

# 개발환경
1. Visual Studio 2010 with SP1 (꼭 sp1이 설치되지 않아도 됩니다) 또는 Visual Studio 2008 sp1
2. MS-SQL 2008 Express (Visual Studio 2010을 설치할 때 같이 설치되는 버전).
3. NHibernate Framework (두둥~ 우리의 주인공!!! download link : http://nhforge.org/Default.aspx )
4. NUnit Unit testing Framework (download link : http://www.nunit.net )
- 단위 테스트 프레임워크로 단위 테스트의 의미와 목적은 여기서 확인.


위에 링크된 NHibernate 와 NUnit 를 다운받아 적당한 폴더에 위치시키고 vs2010를 실행해서 솔루션을 하나 생성합니다.




* 왼쪽과 같이 프로젝트를 구성합니다.
1. Joejy0109.DAL 
데이터베이스를 엑세스하여 데이터를 등록/수정/삭제/호출 하는 추상화된 모듈과 하이버네이트 영속 모델 (Joejy0109.Model)과 데이터베이스 테이블의 매핑 요소. 마지막으로 하이버네이트 세션 공급자 (나중에 설명) 유틸리티 모듈로 이루어진 프로젝트입니다.

2. Joejy0109.Model
데이터베이스의 테이블과 매핑될 영속 클래스 집합 프로젝트입니다.

3. Joejy0109.BLL
비즈니스 업무를 수행할 프로젝트입니다.

4.1. Joejy0109.BLL.Tests
Joejy0109.BLL 프로젝트를 테스트할 테스트 프로젝트입니다.

4.2 Joejy0109.DAL.Tests

Joejy0109.DAL 프로젝트를 테스트할 테스트 프로젝트 입니다.


이제 다운받은 하이버네이트 어셈블리와 NUnit 라이브러리를 프로젝트 레퍼런스에 추가합니다.

하이버네이트
Joejy0109.DAL 과 Joejy0109.DAL.Tests 에 각각 레퍼런스를 추가해주고,
NUnitJoejy0109.DAL.TestsJoejy0109.DAL.Tests 에 각각 레퍼런스를 추가합니다.

또한 Joejy0109.Model 은 Joejy0109.DAL , Joejy0109.DAL.Tests 에 
레퍼런스를 추가합니다.

이제 개발을 위한 기본적인 설정이 완료되었습니다.


여기서 잠깐!
오픈 소스 라이브러리를 손쉽게 설치하는 방법 (더보기를 펼치세요!!!).



이제 각각의 프로젝트를 구현해 나가면 되는데 저는 하향식 개발 방법으로 진행할 것이기 때문에 도메인 모델을 먼저 구현 하도록 하겠습니다.

* 상향식개발? 하향식개발? (더보기)


그보다 먼저 도메인 모델을 구현하기 전에 목표가 필요할 거 같습니다.
그럼 간단하게 업무를 정의해 봅시다.

아래 ERD (Entity - Relationship diagram)는 간단하지만 앞으로 해야하는 여러 매핑 관계와 특정 상황을 보여주기 좋은 예가 될 수 있을 것입니다.

업무 정의를 간단하게 내리자면,
1. 업무의 주요 서비스는 게시판 서비스입니다.
2. 게시판의 게시물은 회원만 작성할 수 있습니다.
3. 게시판은 게시물에 대한 댓글을 작성할 수 있습니다.
4. 게시물 댓글 역시 회원만 작성할 수 있습니다.
5. 회원은 회원 등록시 필수 정보 외에 부가정보를 선택적으로 등록할 수 있습니다.
6. 회원은 게시물 작성에 대한 권한을 부여받아야 합니다.
7. 권한은 특정 항목으로 규정되지 않으며 필요에 따라 생성/수정/삭제 할 수 있습니다.
8. 회원에게 부여되는 권한은 회원별로 다양하게 구성할 수 있습니다.

이렇게 나온 업무를 ERD로 풀어내어 아래와 같은 설계가 나왔습니다.  


엔티티의 각 속성은 크게 중요하지 않으므로 등록일이나 수정일등이 빠졌더라도 이해바랍니다. ^-^;;
파란색으로 굵게 씌여진 부분을 눈여겨 보시기 바랍니다.
개발을 진행하면서 나올 수 있는 여러 관계(Relationship, 1:N 부터 M:N까지)객체망의 순환참조(회원 테이블부터 게시물 댓글 테이블까지), 재귀순환참조 등이 나타나 있습니다. 


다음 챕터는 이 설계 모델을 바탕으로 도메인 모델 클래스를 작성하는 것부터 시작하겠습니다...
커밍 쑨!!!!