2010-02-18 2 views
1

는 복잡한 검색 로직 DAL 메서드를 처리하는 방법에 가장 좋은 방법이 있습니까?파라미터 설정 복잡한 검색 방법

과 같은 비즈니스 요구 사항에 대해 이야기하고 있습니다. "회사가 활동 중이거나 수면 상태 인 고객, 지난 분기에 1,000 $ 이상 주문한 고객, 삭제하지 않아야하는 고객 또는 런던에 사무소가 있어야하거나 New York and Paris ... "

이러한 요구 사항으로 인해 CustomerDAL.GetCustomers (...)에는 9000 개 이상의 매개 변수가 있으며, 레이어가 많은 경우 고통 스러울 수 있습니다. , 인터페이스 등 웹 서비스

는 사용자가 만든 CustomerSearchParameters 구조체를 생성하는 외에, 그런 방법을 정리하고 메서드를 호출하기 전에 설정하는가 다른 좋은 방법입니다 본인?

답변

1

그럼 당신이 방법 호출 GetCustomers 내에서 식을 (빌드)하고 쿼리, 예를 들어,로 그 표현에 전달할 수

GetCustomer(string where) 

그러나 이는 where 절을 확인하는 것을 어렵게 만듭니다. 더 나은 방법은 제약을 캡처하는 식 구조를 사용할 수 있습니다, 이것은 또한 쉽게 이전에 쿼리를 실행하기 식의 유효성을 검사 할 것 :

class Expression { 
    string PropertyName 
    object value 
} 

GetCustome(Expression[] constraints) 
1

어쩌면 당신이 JPA Criteria API을 살펴 있어야합니다. 당신은 JPA를 사용하지 않는 경우에도 귀하의 질의에 기준을 추가 할 수있는이 같은 모델은 동적으로 당신이 필요로 할 수 있습니다. 나는 당신이 (예를 들어, 당신 DAL 또는 DAO 방법을 직접 JPA 기준 API에 의존해서는 안) 투명한 API를 만드는 것이 있는지 확인하는 것이 좋습니다.