Introdução - Room Database Android
Room é uma das bibliotecas existentes dentro do conjunto “Android JetPack” apresentado durante o Google I/O de 2018, ela auxilia os desenvolvedores criando uma abstração das camadas de banco de dados (SQLite).
Suas camadas são representadas por três componentes:
Entity: são entidades responsáveis por mapear as tabelas.
Dao (Data Access Object): são as interfaces utilizadas para acessar os dados armazenados no banco.
É possivel criar Querie’s personalizadas para os select’s, insert’s, delete’s e update’s.
Database: é a representação da classe abstrata do Banco de Dados. Esta receberá uma anotação que irá identificar as Entities, os Dao’s e seus Converters. Ele será responsável por fazer o controle do banco de dados.
Configurações de projeto:
Passo 1: Adicionar as dependências no app/build.gradle:
Passo 2: Criar uma classe MyApplication e adicionar ao Manifest:
Application é uma classe base, que é instanciada uma única vez e previamente a qualquer outra classe de sua aplicação. Ela existirá durante todo o ciclo de vida da aplicação.
Recomendações de uso: quando é necessário realizar algumas task’s antes da criação da primeira activity. Inicialização global de objetos que serão utilizados por outra Activity. Acesso a objetos imutáveis através de métodos estáticos contidos na classe.
Geralmente não é necessário a criação de uma classe que herda Application. Outra alternativa seria a utilização de Singleton’s
Para adicionar ao Manifest é necessário inserir o nome da classe. android:name=”.MyApplication” na tag <application>
Não é recomendável executar as query’s na Mainthread. Utilizei essa opção apenas para demonstração. (allowMainThreadQuerys)
Último passo: insert, update, delete e select.
Recomendações:
1. Dagger2 para injeção de dependência;
2. Stetho para auxiliar na inspeção dos dados contidos no banco;