NHibernate를 사용할 때 검색조건을 사용할 필요성이 있다. DB 사용에서 최고의 중점은 결국 조건검색인 것은 당연하다. 하지만 NHibernate는 많은 클래스들로 이를 사용하게 해두어서 정확하게 어떻게 검색 제약 조건을 걸 수 있는지 알기가 어려웠다.

그래서 간단하게 NHibernate에서 사용되는 검색 제약 조건에 대해서 정리를 하였다.


1. 간단한 검색 조건 추가 방법(Restrictions Class)


위의 코드가 바로 가장 기초적인 Equal 구문, SQL 상에서 보면 Where ID = 'MyID' 을 생성해주는 구문이다. t1List, t2List의 결과는 동일하다.

AbstractCriterion 추상클래스는 NHibernate의 조건 검색을 위한 것으로 Restrictions 클래스을 통해 조건에 대한 인스턴스를 가진다. 위에서 사용된 Eq 함수 외에도 Between, Like, Gt(GreaterThan), Ge(GreaterThanEqual) 등 다양한 함수들이 존재한다. Restrictions에 속하는 함수들은 아래와 같다.


2. AND 조건 OR 조건 추가방법(Junction Class)

NHibernate에서 AND조건, OR조건을 사용하기 위해서는 Junction이라는 클래스를 사용한다. Junction은 위의 Restrictions 클래스들의 집합이라고 생각하면 된다. Junction에는  Disjunction, Conjuntion 두 가지가 존재한다.
  • AND = Conjunction
  • OR = Disjunction

이렇게 생각하면 쉽게 이해되고 아래의 예제를 보면 바로 활용할 수 있을 것이다.


Restrictions.Disjunction()은 추가되는 모든 조건들을 OR로 엮는 것이고 Conjunction은 AND로 엮어준다.

위의 코드는 AND 조건과 OR 조건을 사용한 간단한 조건 검색문 예제이다. 마지막의 junctionWhere의 멤버변수를 확인한 값은 다음과 같다. {((ID = pb and PW = studio) and (LEVEL = A or LEVEL = D))} 처음 의도한 조건을 그대로 가지고 있는 것을 확인할 수 있다.

NHibernate를 이용하면 참 쉬운데...
요즘 개발자들이 사라진 듯하다.ㅠㅠ

Visual Studio 2010이 나왔던데 Entity Framework로 넘어가야되는 것인가?
2010/04/14 00:18 2010/04/14 00:18

이 글의 목적은 외부에 있는 오라클 DB에 ODBC를 이용하여 접근하기 위한 세팅이다.

오라클은 뭘해도 귀찮다.역시 독보적인 기업이란 것의 이름만큼 독단적인 면이 있는 것 같다.
MFC에서 지원하는 쉬운 ODBC세팅들을 바로 이용할 수 없고 Oracle 서버와 연동하기 위한 Instant Client Package를 설치해야한다. Basic 패키지, ODBC 패키지 두번이나 설치해야 MFC에서 ODBC를 이용하여 개발이 가능하다.

물론, OCI(Oracle Communication Interface)를 이용한 가장 빠른 방법이 있지만 개발 시간이 더 걸리기만 하는 불필요한 작업인 것 같다. DB활용도가 높은 편이 아니다면 역시 쉬운 ODBC 강추, 나중에 DB교체도 쉽기 때문에 ODBC로 개발하기로 하였다.

예전에는 Oracle Client를 깔아야만 오라클과 연동이 가능하였지만 현재는 Instant Client만으로도 쉽게 접속이 가능하다. 하지만 관련자료가 조금(?) 부족해서 힘들었다.



1. Instant Client 의 다운로드

다운주소 : http://www.oracle.com/technology/tech/oci/instantclient/instantclient.html

  • instantclient-basic-win32-11.1.0.7.0.zip (46,734,555 bytes)
  • instantclient-odbc-win32-11.1.0.7.0.zip (728,899 bytes)

  위의 두 파일을 공통된 폴더에 압축을 푼다. 기본적으로 위의 버젼일 경우에는 instantclient_11_1 을 기준으로 풀리게 되어있다. 나중에 환경변수 설정을 용이하게 C:\Oracle\instantclient_11_1 로 해제하여 모아두었다.


2. 오라클 ODBC 드라이버의 설치

  odbc_install.exe 파일을 클릭하면 쉽게 ODBC드라이버가 자동으로 설치된다. 실패할 경우에는 dll 파일이 정상적으로 존재하는지 확인하고 부족하다면 새로 다운 받아 설치하자.

  설치 후엔 ODBC드라이버에서 아래와 같이 "Oracle in instantclient_11_1" 이 뜨는지 확인하면 설치완료.
  ( 제어판 > 관리도구 > 데이터원본(ODBC) > 드라이버 )

Oracle ODBC 드라이버



3. 환경변수 설정

  basic 패키지를 사용하기 위해서는 환경변수의 설정이 필요하다. 윈도우 환경변수 설정란으로 들어가서 아래와 같이 설치된 위치를 적어주자.

  • Path                   C:\Oracle\instantclient_11_1
  • NLS_LANG           KOREAN_KOREA.AL32UTF8
  • ORACLE_HOME    C:\Oracle\instantclient_11_1
  • TNS_ADMIN         C:\Oracle\instantclient_11_1


4. tnsnames.ora 설정

  tnsnames.ora는 PC에서 Oracle로 붙기 위한 설정 파일이라고 생각하면 된다. 아래의 샘플을 보고 자신의 서버에 맞게 세팅하자. 아래의 설정은 외부서버에 접속하기 위한 기본세팅.

 ORCL=
 (DESCRIPTION=
  (ADDRESS_LIST=
   (ADDRESS=(PROTOCOL=TCP)(HOST=아이피)(PORT=포트))
  )
  (CONNECT_DATA=
   (SERVER=DEDICATED)
   (SID=SID네임)
  )
 )

5. ODBC의 추가

  위의 ORCL은 tnsnames.ora에서 사용하는 이름이다. 이것을 ODBC에서 실질적으로 사용하는 시스템DSN으로 바꾸기 위해서 ODBC를 추가해준다. 기본적으로 시스템에서 사용하기 때문에 시스템DNS에 아래와 같이 새로 추가한다.

ODBC Oracle


6. 사용하기

사용하기는 쉽다. 역시 생각되로 그냥 CDatabase 로 ODBC 프로그래밍을 한다면 쉽게 처리가 된다.
자세한 정보는 인터넷 검색-ㅅ-;


2009/11/04 12:07 2009/11/04 12:07