Class MongoQueryTranslator

java.lang.Object
com.altibase.document.util.MongoQueryTranslator

public class MongoQueryTranslator extends Object
MongoDB 스타일의 필터(BSON/JSON)를 Altibase SQL의 WHERE 절로 변환하는 핵심 유틸리티 클래스이다.

이 클래스는 MongoDB의 풍부한 쿼리 연산자($eq, $gt, $in, $or, $elemMatch 등)를 Altibase의 표준 SQL 함수(JSON_VALUE, JSON_EXISTS, REGEXP_LIKE 등)를 조합하여 의미적으로 동등한 SQL 조건문으로 변환하는 역할을 수행한다.

핵심 기능

  • 재귀적 파싱: 중첩된 BSON/JSON 구조를 재귀적으로 탐색하여 복잡한 논리 조건(AND, OR, NOT)을 처리한다.
  • 파라미터 분리: SQL 인젝션 공격을 방지하기 위해, 변환된 SQL 문자열과 실제 값(파라미터)을 분리하여 PreparedStatement에 안전하게 바인딩할 수 있도록 지원한다.
  • MongoDB 시맨틱 준수: 필드가 없는 경우의 동작($ne, $nin) 등 MongoDB 쿼리의 미묘한 시맨틱을 최대한 SQL로 정확하게 번역하려고 시도한다.

이 클래스는 모든 메서드가 정적(static)으로 구성되어 있어, 인스턴스화 없이 직접 사용할 수 있다.

See Also:
  • Constructor Details

    • MongoQueryTranslator

      public MongoQueryTranslator()
  • Method Details

    • validateFieldPath

      public static String validateFieldPath(String aFieldName)
      필드 경로가 SQL/JSON 경로로 사용 가능한지 검증한다.
      Parameters:
      aFieldName - 검증할 필드 경로
      Returns:
      검증된 필드 경로
    • convertWithParameters

      public static MongoQueryTranslator.SqlResult convertWithParameters(AltibaseDocument aFilter)
      필터 변환의 주 진입점(Entry Point)이다.

      이 메서드는 불필요한 JSON 직렬화 및 재파싱 과정을 제거하기 위해, AltibaseDocument 필터 객체를 직접 인자로 받는다.

      Parameters:
      aFilter - 사용자가 Filters 빌더나 AltibaseDocument.parse(String)를 통해 생성한 필터 객체.
      Returns:
      변환된 SQL과 파라미터 리스트를 담은 MongoQueryTranslator.SqlResult 객체.
      Throws:
      IllegalArgumentException - 필터의 구조나 연산자 사용법이 잘못된 경우.