Package com.altibase.document.util
Class MongoQueryTranslator
java.lang.Object
com.altibase.document.util.MongoQueryTranslator
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)으로 구성되어 있어, 인스턴스화 없이 직접 사용할 수 있다.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final recordSQL 변환 결과를 담는 불변(Immutable) 레코드(record)이다. -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionconvertWithParameters(AltibaseDocument aFilter) 필터 변환의 주 진입점(Entry Point)이다.
-
Constructor Details
-
MongoQueryTranslator
public MongoQueryTranslator()
-
-
Method Details
-
convertWithParameters
필터 변환의 주 진입점(Entry Point)이다.이 메서드는 불필요한 JSON 직렬화 및 재파싱 과정을 제거하기 위해,
AltibaseDocument필터 객체를 직접 인자로 받는다.- Parameters:
aFilter- 사용자가Filters빌더나AltibaseDocument.parse(String)를 통해 생성한 필터 객체.- Returns:
- 변환된 SQL과 파라미터 리스트를 담은
MongoQueryTranslator.SqlResult객체. - Throws:
IllegalArgumentException- 필터의 구조나 연산자 사용법이 잘못된 경우.
-