티스토리 뷰

반응형
오픈소스 데이터베이스(Database) ObjectBox를 소개하겠습니다.

ObjectBox는?
ObjectBox는 객체를 통째로 저장할 수 있는 모바일 데이터베이스 오픈 소스입니다. 여러분의 반복적인 작업을 피할 수 있게하고, 데이터에 대한 간단한 인터페이스를 제공합니다.

브라우저를 통해 데이터 확인도 가능합니다.

 

안드로이드 프로젝트에 ObjectBox 추가하기
ObjectBox는 jcenter 저장소에서 사용할 수 있습니다. ObjectBox를 Android 프로젝트에 추가하려면, 프로젝트의 build.gradle 파일을 열고 버전과 ObjectBox Gradle 플러그인을 위한 전역 변수를 추가해야 합니다.

buildscript {
    ext.objectboxVersion = '1.5.0'
    respositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.1'
        classpath "io.objectbox:objectbox-gradle-plugin:$objectboxVersion"
    }
}
  
다음으로 앱 또는 모듈에 대한 build.gradle 파일을 열고 com.android.application 플러그인 이후에 io.objectbox 플러그인을 적용합니다.

apply plugin: 'com.android.application'
apply plugin: 'io.objectbox'

Kotlin을 사용하는 프로젝트에 ObjectBox 추가하기
Kotlin을 사용하는 Android 프로젝트의 경우 kotlin-kapt도 추가해야 합니다.

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android' // if using Kotlin
apply plugin: 'kotlin-kapt' // if using Kotlin
apply plugin: 'io.objectbox'

Gradle 플러그인을 동기화 할 때 필요한 ObjectBox 라이브러리 및 코드 생성 작업이 자동으로 추가됩니다.

고급 설정
ObjectBox 플러그인은 적절한 기본 값을 사용하고 대부분의 구성을 자동으로 감지합니다.
그러나 필요한 경우 모델파일의 경로, MyObjectBox 패키지를 구성하고 고급 설정 옵션을 사용하여 디버그 모드를 활성화 할 수 있습니다.
자세한 정보는 아래 링크를 확인 바랍니다.
https://docs.objectbox.io/advanced/advanced-setup

Entity Classes
빌드 환경을 갖춘 후 적어도 하나의 클래스에 @Entity를 추가하여 모델을 정의해야 합니다.

@Entity
public class ExampleEntity {
    @Id public long id;
}
    
ObjectBox는 long 타입의 ID를 사용합니다. @Entity 및 기타 주석에 대한 자세한 내용은 아래 링크를 확인 바랍니다.
https://docs.objectbox.io/entity-annotations

그런 다음 프로젝트를 빌드하여 필요한 클래스를 생성합니다.

필수 클래스들
다음 클래스들은 ObjectBox의 필수 인터페이스들입니다.
MyObjectBox : 엔티티 클래스를 기반으로 생성 된 MyObjectBox는 앱의 BoxStore를 설정하는 빌더를 제공합니다 .
BoxStore : ObjectBox를 사용하기 위한 진입 점입니다. BoxStore는 데이터베이스에 대한 직접 인터페이스이며 Box를 관리합니다.
Box : Box는 엔터티를 계속 쿼리합니다. 각 엔터티에는 Box(BoxStore에서 제공)가 있습니다.
 
필수 클래스 초기화하기
ObjectBox 의 핵심 클래스를 초기화하는 기본 단계는 다음과 같습니다.
// do this once, for example in your Application class
boxStore = MyObjectBox.builder().androidContext(App.this).build();
// do this in your activities/fragments to get hold of a Box
notesBox = ((App) getApplication()).getBoxStore().boxFor(Note.class);

이 예에서는 Note 엔티티가 있다고 가정합니다.
Box를 사용하여 이 특정 엔티티에 대한 작업을 지속할 수 있습니다.

Box 기본 명령어
Box 클래스는 가장 많이 사용되는 클래스입니다. 위 코드에서 잠깐 살펴보았듯 BoxStore.boxFor()를 통해 Box 인스턴스를 얻을 수 있습니다.
Box 인스턴스를 사용하면 특정 유형의 객체에 액세스 할 수 있습니다. 예를 들어 고객 및 주문 엔티티가 있는 경우 각 엔티티와 상호 작용하려면 두 개의 Box 객체가 필요합니다.

Box<Customer> customerBox = boxStore.boxFor(Customer.class);
Box<Order> orderBox = boxStore.boxFor(Order.class);

다음은 Box 클래스에서 제공하는 일부 method입니다.
put : 객체를 추가하거나 업데이트 하는 데 사용 합니다. put이 값을 리턴하면 객체에 ID가 할당된 것입니다. 오버로딩 된 put 메소드를 통해 여러 오브젝트를 넣는 것도 지원하고 있습니다.
get : 객체의 ID를 통해 그것을 얻을 수 있습니다. 같은 타입의 모든 객체를 가져 오려면 getAll을 사용하면 됩니다.
remove : 상자에서 이전에 넣은 객체를 제거하는데 사용합니다.  오버로딩된 remove 메소드를 통해 여러 엔터티를 제거할 수 있고, 같은 타입의 모든 객체를 removeAll로 지울 수 있습니다.
count : 이 상자에 저장된 객체 수를 반환합니다.
query : 쿼리 빌더를 반환합니다. 자세한 내용은 아래 링크를 참고 바랍니다.
https://docs.objectbox.io/queries

Box 클래스에서 사용할 수 있는 메소드의 전체 목록은 아래 링크를 참고 바랍니다.
http://objectbox.io/files/objectbox-java/current/io/objectbox/Box.html

Transactions
ObjectBox는 강력한 트랜잭션을 제공하지만 많은 앱에서 트랜잭션에 대한 몇 가지 기본 지침 만 고려해도 충분합니다.
1. put 은 암시적 트랜잭션을 실행합니다.
2. 가능하면 list를 한번에 put해야합니다. ex) put(entities)
3. 루프에서 많은 수의 DB 상호 작용을 사용하려면 runInTx()와 같은 명시적 트랜잭션 사용을 고려해야 합니다.

트랜잭션에 대한 자세한 내용은 아래 링크를 참고 바랍니다.
https://docs.objectbox.io/transactions

마지막으로 샘플앱 링크와 함께 ObjectBox에 대한 간단한 소개를 마치겠습니다.
https://github.com/objectbox/objectbox-examples

반응형

'개발 > 오픈소스' 카테고리의 다른 글

[오픈소스] Apache License 개요 및 의무사항  (0) 2018.07.09
댓글
공지사항
최근에 올라온 글