Skip to content

4. 핵심 API#

4.1 AltibaseClient#

데이터베이스 연결을 생성하는 팩토리 인터페이스 이다.

메서드#

메서드명 및 파라미터 리턴 타입 설명
getDatabase(String url) AltibaseDatabase JDBC URL을 이용하여 데이터베이스에 연결
getDatabase(String url, Properties props) AltibaseDatabase JDBC URL과 속성으로 연결
getDatabase(Connection conn) AltibaseDatabase 기존 JDBC Connection 객체를 래핑하여 사용

예제: URL로 연결#

// JDBC URL에 인증 정보 포함
String url = "jdbc:Altibase://localhost:20300/mydb?user=kuser&password=manager";
AltibaseDatabase db = AltibaseClient.getDatabase(url);

예제: Properties로 연결#

Properties props = new Properties();
props.put("user", "kuser");
props.put("password", "manager");

String url = "jdbc:Altibase://localhost:20300/mydb";
AltibaseDatabase db = AltibaseClient.getDatabase(url, props);

4.2 AltibaseDatabase#

AltibaseDatabase는 데이터베이스 레벨의 작업을 수행하는 인터페이스이다. 주요 기능으로 컬렉션의 생성, 조회 및 삭제 기능을 제공한다.

메서드#

분류 메서드 리턴 타입 설명
생성 createCollection(String name) AltibaseCollection 기본 옵션(UUID 키 방식)으로 컬렉션을 생성
createCollection(String name, AltibaseDocument options) AltibaseCollection JSON 문서 형식의 옵션으로 컬렉션 생성
createCollection(String name, CollectionOptionsBuilder builder) AltibaseCollection 빌더로 컬렉션 생성
조회 getCollection(String name) AltibaseCollection 기존 컬렉션 가져오기
listCollectionNames() List\ 컬렉션 이름 목록 조회
listCollections() List\ 컬렉션 객체 목록 조회
삭제 dropCollection(String name) void 컬렉션 삭제

예제: 컬렉션 생성#

try (AltibaseDatabase db = AltibaseClient.getDatabase(url)) {
    // 기본 옵션 (UUID 키 자동 생성)
    AltibaseCollection users = db.createCollection("users");

    // 기존 컬렉션 가져오기
    AltibaseCollection existing = db.getCollection("users");
    if (existing != null) {
        System.out.println("컬렉션 존재: " + existing.getName());
    }

    // 컬렉션 목록 조회
    List<String> names = db.listCollectionNames();
    names.forEach(System.out::println);
}

예제: 컬렉션 삭제#

try (AltibaseDatabase db = AltibaseClient.getDatabase(url)) {
    db.dropCollection("temp_collection");
}

4.3 AltibaseCollection#

AltibaseCollection은 문서(Document)의 생성부터 조회, 수정, 삭제(CRUD)까지 모든 실질적인 데이터 조작을 담당하는 인터페이스이다.

메서드#

분류 메서드명 및 파라미터 리턴 타입 설명
문서 생성 createDocument(String json) AltibaseDocument JSON 문자열을 사용하여 새로운 문서를 생성한다.
createDocument(Object key, String json) AltibaseDocument 사용자 정의 키와 JSON을 사용하여 문서를 생성한다. (CLIENT 모드 전용)
데이터 삽입 insertOne(AltibaseDocument doc) InsertResult 단일 문서를 삽입한다.
insertMany(List\ docs) List\ 다중 문서 객체를 배치(Batch) 방식으로 삽입한다.
데이터 조회 find() FindOperation 컬렉션 내의 모든 문서를 조회한다.
Fluent API를 이용하여 조회를 수행하며, 최종적으로 결과를 DocResult로 반환한다.
findOne(Object key) AltibaseDocument 고유 키(Key)를 사용하여 특정 문서 1건을 조회한다.
findByCond(AltibaseDocument filter) FindOperation 필터 조건(Filter)에 부합하는 문서를 조회한다.
findByJsonPath(String jsonPath) FindOperation JsonPath 표현식을 사용하여 문서를 조회한다.
수정 및 교체 replaceOne(Object key, AltibaseDocument doc) UpdateResult 지정된 키의 문서를 새로운 문서로 교체한다.
replaceOneByCond(AltibaseDocument filter, AltibaseDocument doc) UpdateResult 필터 조건에 일치하는 문서를 새로운 문서로 교체한다.
데이터 삭제 deleteOne(Object key) UpdateResult 특정 키를 가진 문서를 삭제한다.
deleteOneByCond(AltibaseDocument filter) UpdateResult 필터 조건에 일치하는 단일 문서를 삭제한다.
deleteMany(AltibaseDocument filter) UpdateResult 필터 조건에 일치하는 모든 문서를 삭제하고, 삭제된 건수를 반환한다.
통계 countDocuments() long 컬렉션 내의 전체 문서 수를 반환한다.
countDocuments(AltibaseDocument filter) long 필터 조건과 일치하는 문서의 총 개수를 반환한다.
기타 정보 getName() String 현재 컬렉션의 이름을 반환한다.
getGenerationType() KeyGenerationType 키 생성 방식을 반환한다. (UUID/CLIENT)
getMetadata() CollectionMetaData 컬렉션의 설정 정보 및 메타데이터를 반환한다.
setCurrentUserId(String userId) void 감사 컬럼용 사용자 ID를 설정한다.
getCurrentUserId() String 현재 설정된 사용자 ID를 반환한다.

예제: 문서 삽입#

try (AltibaseCollection users = db.getCollection("users")) {
    // 단일 문서 삽입
    AltibaseDocument user = users.createDocument(
        "{\"name\": \"홍길동\", \"email\": \"hong@example.com\", \"age\": 30}"
    );
    InsertResult result = users.insertOne(user);
    System.out.println("생성된 키: " + result.getStringKey());

    // 다중 문서 삽입 (배치)
    List<AltibaseDocument> batch = Arrays.asList(
        users.createDocument("{\"name\": \"김철수\", \"age\": 25}"),
        users.createDocument("{\"name\": \"이영희\", \"age\": 28}"),
        users.createDocument("{\"name\": \"박민수\", \"age\": 35}")
    );
    List<InsertResult> results = users.insertMany(batch);
    System.out.println("삽입된 문서 수: " + results.size());
}

예제: 문서 조회#

try (AltibaseCollection users = db.getCollection("users")) {
    // 전체 조회
    try (DocResult all = users.find().execute()) {
        for (AltibaseDocument doc : all) {
            System.out.println(doc.toJson());
        }
    }

    // 조건 조회: 나이가 30 이상인 사용자
    AltibaseDocument filter = AltibaseDocument.parse("{\"age\": {\"$gte\": 30}}");
    try (DocResult filtered = users.findByCond(filter).execute()) {
        for (AltibaseDocument doc : filtered) {
            System.out.println(doc.getString("name"));
        }
    }

    // 단일 문서 조회
    AltibaseDocument oneUser = users.findOne("some-uuid-key");
    if (oneUser != null) {
        System.out.println("찾음: " + oneUser.toJson());
    }
}

예제: 문서 수정#

try (AltibaseCollection users = db.getCollection("users")) {
    // 키로 문서 교체
    AltibaseDocument newDoc = users.createDocument(
        "{\"name\": \"홍길동\", \"email\": \"hong@newmail.com\", \"age\": 31}"
    );
    UpdateResult result = users.replaceOne("some-uuid-key", newDoc);
    System.out.println("수정된 문서 수: " + result.getAffectedDocCount());

    // 조건으로 문서 교체
    AltibaseDocument filter = AltibaseDocument.parse("{\"email\": \"old@example.com\"}");
    AltibaseDocument updated = users.createDocument(
        "{\"name\": \"수정됨\", \"email\": \"new@example.com\"}"
    );
    users.replaceOneByCond(filter, updated);
}

예제: 문서 삭제#

try (AltibaseCollection users = db.getCollection("users")) {
    // 키로 삭제
    users.deleteOne("some-uuid-key");

    // 조건으로 단일 삭제
    AltibaseDocument filter = AltibaseDocument.parse("{\"status\": \"inactive\"}");
    users.deleteOneByCond(filter);

    // 조건으로 다중 삭제
    AltibaseDocument ageFilter = AltibaseDocument.parse("{\"age\": {\"$lt\": 18}}");
    UpdateResult result = users.deleteMany(ageFilter);
    System.out.println("삭제된 문서 수: " + result.getAffectedDocCount());
}

4.3 AltibaseDocument#

JSON 문서를 표현하는 클래스이다. MongoDB의 Document 클래스를 확장하였다.

정적 팩토리 메서드#

메서드 리턴 타입 설명
parse(String json) AltibaseDocument JSON 문자열 파싱
fromDocument(Document doc) AltibaseDocument BSON Document 변환

주요 메서드#

메서드 리턴 타입 설명
get(String key) Object 필드 조회
getInteger(String key) Integer Integer 필드 조회
getIntegerKey() Integer Integer 타입 키 조회
getKeyValue() Object 키 값 조회
getBigintKey() Long Long 타입 키 조회
getString(String key) String String 필드 조회
put(String key, Object value) void 필드 추가
setKeyValue(Object key) void 키 값 설정
toJson() String JSON 문자열 변환

예제: 문서 조작#

// JSON 파싱
AltibaseDocument doc = AltibaseDocument.parse(
    "{\"title\": \"책 제목\", \"price\": 15000}"
);

// 필드 추가/수정
doc.put("author", "작가명");
doc.put("tags", Arrays.asList("소설", "베스트셀러"));

// 필드 조회
String title = doc.getString("title");
Integer price = doc.getInteger("price");
List<String> tags = (List<String>) doc.get("tags");

// JSON 출력
System.out.println(doc.toJson());
// {"title": "책 제목", "price": 15000, "author": "작가명", "tags": ["소설", "베스트셀러"]}