Configurando Realm Android

ByLearner quer saber como utilizar um banco de dados NoSQL dentro do android? Para isso temos o REALM.

Para instalarmos e configurarmos o Realm no Android devemos seguir alguns passos.

Primeiro passo: temos que colocar o classpath no Build.Gradle do projeto

dependencies {
        ....
        classpath "io.realm:realm-gradle-plugin:5.8.0"
        ....
    }

Segundo passo: colocar a dependência no Build.Gradle

dependencies {
    ...
    implementation 'io.realm:android-adapters:2.0.0'
    ...
}

Com as dependências adicionadas agora podemos configurar o Realm no nosso projeto.

Terceiro passo: Temos que criar uma class que herde de Application.

class MyApplication : Application() {

    override fun onCreate() {
        initRealm()        
    }

    private fun initRealm() {
        try {
            Realm.init(this)
            val realmConfiguration = RealmConfiguration.Builder()
                .name("[NOME_DO_BANCO_DE_DADOS].realm")
                .schemaVersion(0)
                .build()
            Realm.setDefaultConfiguration(realmConfiguration)
        } catch (e: Exception) {
            e.printStackTrace()
        }
    }
}

Agora temos o nosso realm configurado no nosso projeto, com isso temos que ter os nossos objetos que serão armazenados no banco de dados.

Quarto passo: Temos que criar ao menos um objeto que herde de RealmObject.

@RealmClass
open class MyObject : RealmObject() {
    @Required
    @PrimaryKey
    var uuid: String = ""
    @Required
    var description: String = ""
}

Com todas essas classes criadas agora podemos manipular os nossos objetos no banco de dados.

Quinto passo: Temos que criar a nossa class DAO.

open class Dao {

    private val realm: Realm = Realm.getDefaultInstance()
    private val _class = MyObject::class.java

    fun getAll(callback: (List<MyObject>) -> Unit) {
        try {
            val result = realm.where(_class).findAllAsync()
            result.addChangeListener { r: RealmResults<MyObject> ->
                callback(r.toList())
            }
        }catch (e: Exception){
            e.printStackTrace()
        }
    }

    fun insert(obj: MyObject, callback: () -> Unit) {
        realm.executeTransactionAsync {
            it.insertOrUpdate(obj)
            callback()
        }
    }
}

Deixe uma resposta