Class AltibaseDocument

java.lang.Object
org.bson.Document
com.altibase.document.api.AltibaseDocument
All Implemented Interfaces:
Serializable, Map<String,Object>, org.bson.conversions.Bson

public class AltibaseDocument extends org.bson.Document
Altibase JSON 컬렉션의 문서를 표현하는 핵심 클래스이다.

이 클래스는 MongoDB 드라이버의 검증된 Document 클래스를 상속하여, 강력한 JSON 처리 기능을 재사용한다. 여기에 Altibase 데이터베이스의 특성에 맞춰 명시적인 **키(Key) 관리 기능**과 **타입 안전성(Type Safety)**을 확장하여 제공한다.

주요 설계 특징

  • 기능 재사용: Document를 상속하여 JSON 파싱, 직렬화, 데이터 조작의 안정성을 보장한다.
  • 키(Key) 정보 분리: 문서의 내용과 별개로 키(Key)의 이름, 타입, 값을 독립적으로 관리하여 명확성과 효율성을 높인다.
  • 타입 안전성: 키 값 설정 시 엄격한 타입 검사를 수행하여 데이터베이스 오류를 사전에 방지한다.

생성 방법

Since:
1.0
See Also:
  • Constructor Details

    • AltibaseDocument

      public AltibaseDocument()
      키 메타데이터가 없는 빈 문서를 생성한다. 주로 필터나 정렬 조건을 동적으로 구성할 때 사용된다.
    • AltibaseDocument

      public AltibaseDocument(String aKey, Object aValue)
      키 메타데이터가 없는 문서를 키-값 쌍으로 생성한다. Document(String, Object)와 동일한 기능을 제공한다.
      Parameters:
      aKey - 초기 키
      aValue - 초기 값
  • Method Details

    • fromDocument

      public static AltibaseDocument fromDocument(org.bson.Document aDocument)
      기존 Document 객체로부터 키 메타데이터가 없는 AltibaseDocument 인스턴스를 생성한다.

      이 정적 팩토리 메서드는 이미 생성된 Document 객체를 AltibaseDocument로 변환할 때 유용하다.

      Parameters:
      aDocument - 변환할 원본 Document 객체
      Returns:
      내용이 복사된 새로운 AltibaseDocument 인스턴스
    • createWithKeyMetadata

      public static AltibaseDocument createWithKeyMetadata(String aKeyFieldName, Class<?> aKeyType)
      키 메타데이터를 가진 빈 AltibaseDocument 인스턴스를 생성한다.

      이 정적 팩토리 메서드는 프레임워크 내부나 고급 사용자가 키 정보를 포함한 문서를 명시적으로 생성할 때 사용한다. 일반적으로는 AltibaseCollection.createDocument(String)를 통해 문서를 생성하는 것이 권장된다.

      Parameters:
      aKeyFieldName - 키 필드의 이름
      aKeyType - 키 필드의 자바 타입
      Returns:
      키 메타데이터가 설정된 새로운 AltibaseDocument 인스턴스
    • parse

      public static AltibaseDocument parse(String aJson)
      JSON 문자열로부터 키 메타데이터가 없는 AltibaseDocument 인스턴스를 생성한다.

      이 정적 팩토리 메서드는 조회 조건 필터, 정렬 명세 등 순수하게 JSON 데이터 구조만 필요한 경우에 유용하다.

      Parameters:
      aJson - 파싱할 JSON 형식의 문자열
      Returns:
      JSON 내용이 채워진 새로운 AltibaseDocument 인스턴스
      Throws:
      AltibaseCollectionException - JSON 파싱에 실패할 경우
    • createFromJson

      public static AltibaseDocument createFromJson(String aJson, String aKeyFieldName, Class<?> aKeyType)
      프레임워크 내부용 팩토리 메서드로, JSON 문자열과 키 메타데이터로부터 AltibaseDocument를 생성한다.
      Parameters:
      aJson - 파싱할 JSON 형식의 문자열
      aKeyFieldName - 키 필드명 (지정하지 않으려면 null)
      aKeyType - 키 타입 (지정하지 않으려면 null)
      Returns:
      JSON 내용과 키 메타데이터가 설정된 새로운 AltibaseDocument 인스턴스
      Throws:
      AltibaseCollectionException - JSON 파싱에 실패할 경우
    • parseFromRestResponse

      public static AltibaseDocument parseFromRestResponse(String aRestResponseJson)
      REST API 응답 JSON으로부터 AltibaseDocument를 생성한다.

      REST API 응답 구조(key, keyType, keyFieldName, document 등)를 인식하여 키 메타데이터와 함께 문서를 생성한다.

      Parameters:
      aRestResponseJson - REST API 응답 JSON 문자열
      Returns:
      키 메타데이터가 설정된 AltibaseDocument 인스턴스
      Throws:
      AltibaseCollectionException - JSON 파싱 실패 또는 유효하지 않은 응답 형식
    • getKeyValue

      public Object getKeyValue()
      설정된 문서의 키 값을 반환한다.
      Returns:
      키 값 객체. 키가 설정되지 않았다면 null을 반환한다.
    • setKeyFieldName

      public void setKeyFieldName(String aKeyFieldName)
      문서의 키 필드 이름을 설정한다.
      Parameters:
      aKeyFieldName - 키 필드 이름
    • getKeyFieldName

      public String getKeyFieldName()
      문서의 키 필드 이름을 반환한다.
      Returns:
      키 필드 이름
    • setKeyType

      public void setKeyType(Class<?> aKeyType)
      문서의 키 타입을 설정한다.
      Parameters:
      aKeyType - 키의 자바 Class 객체
    • getKeyType

      public Class<?> getKeyType()
      문서의 키 타입을 반환한다.
      Returns:
      키의 자바 Class 객체
    • getIntegerKey

      public Integer getIntegerKey()
      키 값을 Integer 타입으로 안전하게 반환한다.
      Returns:
      Integer 타입의 키 값
      Throws:
      AltibaseCollectionException - 키 타입이 Integer가 아닐 경우
    • getSmallintKey

      public Short getSmallintKey()
      키 값을 Short 타입으로 안전하게 반환한다.
      Returns:
      Short 타입의 키 값
      Throws:
      AltibaseCollectionException - 키 타입이 Short가 아닐 경우
    • getVarcharKey

      public String getVarcharKey()
      키 값을 String 타입으로 안전하게 반환한다.
      Returns:
      String 타입의 키 값
      Throws:
      AltibaseCollectionException - 키 타입이 String이 아닐 경우
    • getCharKey

      public String getCharKey()
      키 값을 String 타입으로 안전하게 반환한다. (getVarcharKey()와 동일)
      Returns:
      String 타입의 키 값
      Throws:
      AltibaseCollectionException - 키 타입이 String이 아닐 경우
    • getBigintKey

      public Long getBigintKey()
      키 값을 Long 타입으로 안전하게 반환한다.
      Returns:
      Long 타입의 키 값
      Throws:
      AltibaseCollectionException - 키 타입이 Long이 아닐 경우
    • setKeyValue

      public void setKeyValue(Object aKeyValue)
      문서의 키 값을 설정한다.

      이 메서드는 값 설정 시 엄격한 유효성 검사를 수행한다:

      • 키 타입이 미리 정의되어 있는지 확인한다.
      • 주어진 값의 타입이 정의된 키 타입과 일치하는지 확인한다.
      • 값이 null이 아닌지 확인한다.
      • 값이 문자열인 경우, 비어있지 않은지 확인한다.
      Parameters:
      aKeyValue - 설정할 키 값
      Throws:
      AltibaseCollectionException - 키 타입이 정의되지 않았거나 타입이 일치하지 않을 경우
      IllegalArgumentException - 키 값이 null이거나 비어있는 문자열일 경우
    • getCreated

      public Timestamp getCreated()
      문서 생성 시각을 반환한다.
      Returns:
      문서 생성 시각. 설정되지 않았다면 null을 반환한다.
    • setCreated

      public void setCreated(Timestamp aCreated)
      문서 생성 시각을 설정한다.
      Parameters:
      aCreated - 문서 생성 시각
    • getCreatedBy

      public String getCreatedBy()
      문서를 생성한 사용자 ID를 반환한다.
      Returns:
      생성자 사용자 ID. 설정되지 않았다면 null을 반환한다.
    • setCreatedBy

      public void setCreatedBy(String aCreatedBy)
      문서를 생성한 사용자 ID를 설정한다.
      Parameters:
      aCreatedBy - 생성자 사용자 ID
    • getLastModified

      public Timestamp getLastModified()
      문서 최종 수정 시각을 반환한다.
      Returns:
      최종 수정 시각. 설정되지 않았다면 null을 반환한다.
    • setLastModified

      public void setLastModified(Timestamp aLastModified)
      문서 최종 수정 시각을 설정한다.
      Parameters:
      aLastModified - 최종 수정 시각
    • getLastModifiedBy

      public String getLastModifiedBy()
      문서를 최종 수정한 사용자 ID를 반환한다.
      Returns:
      최종 수정자 사용자 ID. 설정되지 않았다면 null을 반환한다.
    • setLastModifiedBy

      public void setLastModifiedBy(String aLastModifiedBy)
      문서를 최종 수정한 사용자 ID를 설정한다.
      Parameters:
      aLastModifiedBy - 최종 수정자 사용자 ID
    • toString

      public String toString()
      문서의 상세 정보를 문자열로 반환한다.

      문서의 JSON 내용뿐만 아니라, 키 필드명, 타입, 값 등 디버깅에 유용한 메타데이터를 포함하는 포맷팅된 문자열을 반환한다.

      Overrides:
      toString in class org.bson.Document
      Returns:
      문서의 상세 정보를 담은 문자열