0

Room Database: introdução a persistência de dados com kotlin

Luiz Correa
Luiz Correa

O que é?

A Room é uma biblioteca ORM (Object Relacional Mapping), mapeia os objetos de banco e dados para objetos java (funciona com Kotlin, por causa da interoperabilidade de Kotlin-Java).


Para que serve?

Salvar os dados da aplicação em algum lugar que seu app seja capaz de recuperar após a finalização do app quando executado novamente, para que as informações salvas persistam além da execução do aplicativo.


Como funciona ?

A Room cria uma camada de abstração acima do SQLite para permitir o acesso ao banco de dados, aproveitando toas as funcionalidades do SQLite.


o Rom é composto principalmente por 3 componentes

  • Banco de dados é um objeto no app que representa conjunto de uma tabela ou várias tabelas de dados
  • Entidade representa uma tabela dentro do banco de dados
  • DAO (Data Access Object) Objetos que contém os métodos para acessar o banco de dados


O Banco de dados do Room simplifica o trabalho com o banco de dados e serve como ponto de acesso para o banco de dados SQLite (oculta SQLiteOpenHelper).

O banco de dados do Room usa o DAO para realizar consultas ao banco de dados SQLite.


Além disso ViewModel: atua como um centro de comunicação entre o repositório (dados) e a IU. A IU não precisa mais se preocupar com a origem dos dados. As instâncias do ViewModel sobrevivem à recriação de atividade/fragmento


Figura 1. Diagrama da arquitetura do Room.


Porque usar então o Room Database e não o SQLite?


Além de tornar a aplicação menos verbosa, aumenta a produtividade
Verifica em tempo de compilação as consultas SQL ,cada @Query e @Entity é uma verificação.Isso evita , em produção, problemas de travamento por erro de escrita ou sintáxe das linha de comando, porque que o Room fica verificando estes erros enquanto é desenvolvido a aplicação.

Facilmente integrado com LiveData e outros Architecture Components do JecPackLiveData: uma classe armazenadora de dados que pode ser observada (link em inglês). Ela sempre mantém/armazena em cache a versão mais recente dos dados e notifica os observadores quando os dados mudam. LiveData é compatível com o ciclo de vida. Os componentes da IU apenas observam dados relevantes e não interrompem nem retomam a observação.
O LiveData gerencia tudo isso automaticamente, já que conta com reconhecimento das mudanças relevantes do status do ciclo de vida durante a observação.


Pré-requisitos


  • Android Studio 4.0 ou mais recente e conhecimento sobre como usá-lo.
  • Verifique se o Android Studio está atualizado, assim como o SDK e o Gradle.
  • Um dispositivo ou emulador Android.
  • É necessário conhecer o Kotlin, os conceitos de projeto orientados a objetos e os princípios básicos de desenvolvimento do Android, principalmente:
  • RecyclerView e adaptadores.
  • Banco de dados SQLite e a linguagem de consulta SQLite.
  • Corrotinas básicas. Se você não for familiarizado com as corrotinas, consulte Como usar corrotinas Kotlin no app Android.


Utilizando o Room


Adicionar dependencias do Room aos arquivos do Gradle.No Android Studio, clique na guia "Projects" e expanda a pasta "Gradle Scripts".

Abra build.gradle (Module: app).


Aplique o plug-in do Kotlin para kapt processar anotações (link em inglês) adicionando-o dentro da seção de plug-ins definida na parte superior do arquivo build.gradle (Module: app).


E ativar o ViewBinding

plugins {
 ...
  id 'kotlin-kapt'
}
​
buildFeatures {
 viewBinding = true
}


No mesmo arquivo , logo abaixo na sessão de dependencies aplique :

dependecies {
 ...
​
  //Utilizando o Room
  implementation("androidx.room:room-runtime:2.3.0")
  annotationProcessor "androidx.room:room-compiler:2.3.0"
​
  // To use Kotlin annotation processing tool (kapt)
  kapt ("androidx.room:room-compiler:2.3.0")
​
  // Kotlin Extensions and Coroutines (optional)
  implementation("androidx.room:room-ktx:2.3.0")
​
}


Clique em sync project with gradle files


E pronto, está tudo preparado para criar o app


Links úteis


fonte: Developer Android

codelabs Android Room com visualização


Entidade

SQLite

DAO

Query

Persistense Library - Room

Coroutine e desempenho da Coroutine


Luiz Correa - Android Developer


0
0

Comentários (3)

1
Isaias Bueno

Isaias Bueno

19/07/2021 09:15

Excelente Exemplo Luiz! Muito obrigado!

1
Wellington Santos

Wellington Santos

13/07/2021 23:15

Ótimo artigo, agora eu consegui entender melhor o que o instrutor estava fazendo no projeto no bootcamp do Inter.

1
Ryam Alves

Ryam Alves

13/07/2021 23:02

Parabéns pelo artigo Luiz. Está muito bem documentado e organizado!

Desenvolvedor Mobile Kotlin e React Native | Front-End - React Js

Brasil