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": ["소설", "베스트셀러"]}