Interface AltibaseDatabase

All Superinterfaces:
AutoCloseable
All Known Implementing Classes:
AltibaseDatabaseImpl

public interface AltibaseDatabase extends AutoCloseable
Altibase 문서 데이터베이스 하나를 표현하는 핵심 인터페이스이다.

이 인터페이스는 컬렉션 생성, 조회, 삭제와 같은 컬렉션 관리 기능과 트랜잭션 제어 기능을 제공한다. 이 인터페이스는 AutoCloseable을 구현하므로, 사용 후 데이터베이스 연결이 올바르게 닫히도록 try-with-resources 구문과 함께 사용하는 것을 강력히 권장한다.

사용 예제


 try (AltibaseDatabase db =
          AltibaseSession.getDatabase("jdbc:Altibase://localhost:20300/mydb?user=sys&password=manager")) {
     // 컬렉션 가져오기 또는 생성하기
     AltibaseCollection books = db.getCollection("books");

     // 컬렉션에 대한 작업 수행
     books.insertOne(AltibaseDocument.parse("{\"title\": \"1984\"}"));
 }
 
Since:
1.0
See Also:
  • Field Details

    • JSON_TYPE

      static final int JSON_TYPE
      JSON 타입을 나타내는 내부 상수 (Altibase JDBC 드라이버 기준)
      See Also:
  • Method Details

    • createCollection

      AltibaseCollection createCollection(String aCollectionName)
      기본 옵션으로 새로운 컬렉션을 생성한다.
      Parameters:
      aCollectionName - 생성할 컬렉션의 이름
      Returns:
      생성된 AltibaseCollection 객체
      Throws:
      AltibaseCollectionException - 동일한 이름의 컬렉션이 이미 존재하거나 생성에 실패할 경우
    • createCollection

      AltibaseCollection createCollection(String aCollectionName, AltibaseDocument aOptionDefJson)
      JSON 형식으로 정의된 옵션을 사용하여 새로운 컬렉션을 생성한다.

      옵션은 AltibaseDocument.parse()를 통해 JSON 문자열로부터 생성할 수 있다.

      Parameters:
      aCollectionName - 생성할 컬렉션의 이름
      aOptionDefJson - 컬렉션 생성 옵션을 정의한 AltibaseDocument 객체
      Returns:
      생성된 AltibaseCollection 객체
      Throws:
      AltibaseCollectionException - 동일한 이름의 컬렉션이 이미 존재하거나 생성에 실패할 경우
    • createCollection

      AltibaseCollection createCollection(String aCollectionName, CollectionOptionsBuilder aOptionsBuilder)
      CollectionOptionsBuilder를 사용하여 구성된 옵션으로 새로운 컬렉션을 생성한다.

      이 방식은 타입-안전(type-safe)하고 가독성 높은 코드로 옵션을 설정할 때 유용하다.

      Parameters:
      aCollectionName - 생성할 컬렉션의 이름
      aOptionsBuilder - 컬렉션 생성 옵션을 구성하는 CollectionOptionsBuilder 인스턴스
      Returns:
      생성된 AltibaseCollection 객체
      Throws:
      AltibaseCollectionException - 동일한 이름의 컬렉션이 이미 존재하거나 생성에 실패할 경우
    • getCollection

      AltibaseCollection getCollection(String aCollectionName)
      지정한 이름의 기존 컬렉션을 가져온다.
      Parameters:
      aCollectionName - 가져올 컬렉션의 이름
      Returns:
      조회된 AltibaseCollection 객체. 컬렉션이 존재하지 않을 경우 null을 반환한다.
      Throws:
      AltibaseConnectionException - 데이터베이스 연결에 문제가 발생할 경우
    • close

      void close()
      데이터베이스 연결과 관련된 모든 리소스를 해제한다. try-with-resources 구문에 의해 자동으로 호출된다.
      Specified by:
      close in interface AutoCloseable
    • unregisterCollection

      void unregisterCollection(AltibaseCollection aCol)
      주로 내부 관리용으로 사용되며, AltibaseCollection.close()가 호출될 때 해당 컬렉션을 데이터베이스 객체의 관리 목록에서 제거한다.
      Parameters:
      aCol - 등록 해제할 AltibaseCollection 객체
    • startTransaction

      void startTransaction()
      수동 트랜잭션 제어를 시작한다. 이 메서드 호출 후 수행되는 모든 작업은 endTransaction() 또는 abortTransaction()이 호출될 때까지 하나의 트랜잭션으로 묶인다.
    • abortTransaction

      void abortTransaction()
      현재 진행 중인 트랜잭션의 모든 변경사항을 취소하고 트랜잭션을 종료한다 (롤백).
    • endTransaction

      void endTransaction()
      현재 진행 중인 트랜잭션의 모든 변경사항을 영구적으로 저장하고 트랜잭션을 종료한다 (커밋).
    • isTransactionActive

      boolean isTransactionActive()
      수동으로 시작된 트랜잭션이 현재 활성 상태인지 여부를 확인한다.
      Returns:
      트랜잭션이 활성 상태이면 true, 그렇지 않으면 false
    • dropCollection

      void dropCollection(String aName)
      데이터베이스에서 지정한 이름의 컬렉션을 영구적으로 삭제한다.
      Parameters:
      aName - 삭제할 컬렉션의 이름
      Throws:
      AltibaseCollectionException - 컬렉션이 존재하지 않거나 삭제에 실패할 경우
    • getCharacterSetName

      String getCharacterSetName()
      데이터베이스 연결의 문자셋 이름을 반환한다. 주로 내부적으로 문서 크기 계산 시 사용된다.
      Returns:
      문자셋 이름
    • getQuoteStr

      String getQuoteStr()
      데이터베이스의 식별자 인용부호(Quote Character)를 반환한다. (예: "\"")
      Returns:
      인용부호 문자열
    • listCollectionNames

      List<String> listCollectionNames()
      현재 데이터베이스에 존재하는 모든 컬렉션의 이름 목록을 반환한다.
      Returns:
      컬렉션 이름의 List
      Throws:
      AltibaseConnectionException - 데이터베이스 연결에 문제가 발생할 경우
    • listCollections

      List<AltibaseCollection> listCollections()
      현재 데이터베이스에 존재하는 모든 컬렉션에 대한 AltibaseCollection 객체 목록을 반환한다.
      Returns:
      AltibaseCollection 객체의 List
      Throws:
      AltibaseConnectionException - 데이터베이스 연결에 문제가 발생할 경우
    • listCollectionMetadata

      List<CollectionMetaData> listCollectionMetadata()
      현재 사용자의 모든 컬렉션 메타데이터를 반환한다.

      이 메서드는 현재 사용자(userId)의 컬렉션 메타데이터만 조회한다. REST API에서 컬렉션 목록과 함께 메타데이터 정보를 제공하기 위해 사용된다.

      Returns:
      컬렉션 메타데이터 List
      Throws:
      AltibaseConnectionException - 데이터베이스 연결에 문제가 발생할 경우
    • listAllCollectionMetadataForAdmin

      List<CollectionMetaData> listAllCollectionMetadataForAdmin()
      모든 사용자의 컬렉션 메타데이터를 반환한다 (ADMIN 전용).

      이 메서드는 userId 필터링 없이 전체 컬렉션의 메타데이터를 조회한다. REST API의 ADMIN 권한 사용자가 모든 컬렉션을 관리하기 위해 사용된다.

      Returns:
      모든 컬렉션의 메타데이터 List
      Throws:
      AltibaseConnectionException - 데이터베이스 연결에 문제가 발생할 경우
    • listCollectionMetadataByUserId

      List<CollectionMetaData> listCollectionMetadataByUserId(String aUserId)
      지정한 사용자의 모든 컬렉션 메타데이터를 반환한다 (ADMIN 전용).

      이 메서드는 Admin이 특정 사용자의 컬렉션 목록을 조회할 때 사용된다. 저장 프로시저를 통해 DB에서 직접 userId로 필터링하므로 성능이 우수하다.

      Parameters:
      aUserId - 조회할 대상 사용자 ID
      Returns:
      컬렉션 메타데이터 List
      Throws:
      AltibaseConnectionException - 데이터베이스 연결에 문제가 발생할 경우
    • getCollectionCrossUser

      AltibaseCollection getCollectionCrossUser(String aOwnerUserId, String aCollectionName)
      다른 사용자의 컬렉션을 가져온다 (크로스 유저 접근).

      하이브리드 ACL 시스템에서 권한이 부여된 경우, 다른 사용자의 컬렉션에 접근할 수 있다. 이 메서드는 REST API에서 ACL 체크 후 호출된다.

      Parameters:
      aOwnerUserId - 컬렉션 소유자의 userId
      aCollectionName - 가져올 컬렉션의 이름
      Returns:
      조회된 AltibaseCollection 객체. 컬렉션이 존재하지 않을 경우 null을 반환한다.
      Throws:
      AltibaseConnectionException - 데이터베이스 연결에 문제가 발생할 경우
    • getConnection

      Connection getConnection()
      내부적으로 관리하는 JDBC Connection 객체를 반환한다.
      Returns:
      현재 사용 중인 JDBC Connection 객체