2011-09-21 3 views
2

나는 다음과 같은 설계 문제에 직면하고 있습니다 : iBatis는 동적 SQL 쿼리에 적합한 선택입니까?

  • 이 WHERE 절은 값이 사용자 입력을 기반으로, 동적 것이다에 정의 된 제약 조건을 포함 여러 가지 준비 SQL 문이 될 것입니다.
  • 또한 매우 복잡한 것으로 끝날 수도있는 일부 SQL 문이 있지만 결과 SELECT 절은 여전히 ​​간단합니다.

iBatis가 이러한 요구 사항에 부합한다는 것을 이해하는 한.

  • 사용자가 UI를 통해 전체 쿼리 작성에 영향을 주어 임시로 쿼리를 작성하면 어떻게됩니까?

전체 WHERE 절이 동적이므로 준비된 명령문은 SQL 문에 집계 절 또는 하위 선택 항목을 포함 할 수도 있습니다.

이 모든 것을 염두에두고 위의 요구 사항을 충족하는 최상의 아키텍처로 iBatis를 사용하거나 다른 맞춤 개발을 수행 하시겠습니까?

+0

myBatis를 고려하십시오. 그것은 iBatis의 최신 버전입니다. iBatis 개발이 중단되었습니다 (저는 믿습니다). 어떤 점에서 (내가 알지 못하는 이유로) 프로젝트가 Apache에서 Google로 옮겨졌고 이름이 myBatis로 변경되었습니다. – DwB

+0

미안 - 당연히 내 바티스를 의미하는 ... –

답변

3

최신 버전의 iBatis (MyBatis)를 사용하면 동적 쿼리 생성에 강력한 OGNL 기반 표현식을 사용할 수 있습니다. iBATIS의 가장 강력한 기능 중 하나는 항상 동적 SQL 기능이었습니다.

1

나는 iBatis에 투표 할 것입니다. 필자는 사소한 결과 집합을 초래하는 복잡한 SQL 쿼리 (특히 많은 JOIN 및 SUB 선택)가 실행되는 것이 가장 좋습니다.

iBatis를 사용할 때 SQL을 제어 할 수 있으며 기존/기존 데이터베이스와 통합 할 수 있습니다.

2

이 경우 iBatis가 작동합니다. iBatis를 사용하여 UI에서 사용자 선택을 기반으로 동적 인 임시 쿼리를 작성하는 것과 똑같은 시나리오를 수행했습니다. 사용 가능하게 된 사용자 요소의 수가 페이지별로 증가함에 따라 복잡성이 발생했지만이를 수행 할 수 있습니다.

Hibernate는 또 다른 명백한 옵션 인 완전히 기능하는 ORM이지만 사용하기가 더 복잡합니다. 여기에 몇 가지 링크가 도움이됩니다

StackOverflow question on Dynamic Queries with Hibernate

Dynamic Queries with Hibernate

그래서 나는 첫 번째 선택으로 iBatis를 함께 이동 또는 솔루션으로 최대 절전 모드 것입니다. 복잡성으로 인해 전체 디자인을 처음부터 생각하지 않는 한 사용자 지정 솔루션이 너무 쉽게 복잡하고 중첩 된 코드로 변할 것이라고 생각합니다. 물론 요구 사항은 변경되지 않는다고 가정하십시오.

나는 바티스가 당신이 더 나은 SQL 코드를 구성하고 미래의 변화 대신 디자인에 유연성을 부여 할 수 있다고 생각합니다. IMHO.

관련 문제