그래서 간단하게 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로 넘어가야되는 것인가?












