ide/androidstudio

RxBrite Android-Orma

C/H 2017. 1. 10. 08:30

Orma ORM for Android

Orma 란?

Orma는 Android용 ORM. 구현은 SQLiteDatabase 래퍼. ActiveAndroid처럼 간단하고, GreenDAO처럼 빠른 ORM을 목표로 개발.

성능은 천하 제일 "Android의 ORM"무도회 (2015 년판) 을 참조.

build.app 2017.01.03일자

dependencies {
    annotationProcessor 'com.github.gfx.android.orma:orma-processor:4.0.2'
    compile 'com.github.gfx.android.orma:orma:4.0.2'
}

github 설명

1. 개요

@Table, @Column 및 @PrimaryKey로 주석 된 모델 클래스를 정의하고, APK 빌드 명령을 실행하여 도우미 클래스를 생성.

package com.github.gfx.android.orma.example;

import com.github.gfx.android.orma.annotation.Column;
import com.github.gfx.android.orma.annotation.PrimaryKey;
import com.github.gfx.android.orma.annotation.Table;

import android.support.annotation.Nullable;

@Table
public class Todo {

    @PrimaryKey
    public long id;

    @Column(indexed = true)
    public String title;

    @Column
    @Nullable // allows NULL (default: NOT NULL)
    public String content;

    @Column
    public long createdTimeMillis;
}

2. 인스턴스

orma-processor에 의해 생성 된 데이터베이스 핸들 OrmaDatabase를 인스턴스화.

    OrmaDatabase orma = OrmaDatabase.builder(context).build();

OrmaDatabase를 통해 모델을 만들고, 읽고, 업데이트하고 삭제

    Todo todo = ...;

    // create
    orma.insertIntoTodo(todo);

    // prepared statements with transaction
    orma.transactionSync( -> { // or transactionAsync() to execute tasks in background
        Inserter<todo> inserter = orma.prepareInsertIntoTodo();
        inserter.execute(todo);
    });

    // read
    orma.selectFromTodo()
    .titleEq("foo") // equivalent to `where("title = ?", "foo")`
    .executeAsObservable() // first-class RxJava interface
    .subscribe(...);

    // update
    orma.updateTodo()
    .titleEq("foo")
    .content("a new content") // to setup what are updated
    .execute();

    // delete
    orma.deleteFromTodo()
    .titleEq("foo")
    .execute();


반응형

'ide > androidstudio' 카테고리의 다른 글

orma "transformClasses With New Class Shrinker For Debug"  (0) 2017.01.12
Android ORM  (0) 2017.01.11
Android Studio Codestyle Import  (0) 2017.01.09
Theme : Consistent Design with AppCompat  (0) 2017.01.06
Android Design Support Library  (0) 2017.01.05