Introdução ao Room
Conteudo
Introdução ao Room
Neste artigo, veremos uma introdução ao Room, uma biblioteca Android que fornece uma camada de abstração sobre o SQLite, para acesso a bancos de dados.
Isso simplifica todas as criações do esquema do banco de dados, os relacionamentos entre eles e suas operações SQL
Por esse motivo, aumentará nossa produtividade em comparação com o uso do pacote nativo android.database.sqlite.
A seguir, é apresentado um conjunto de tutoriais para aprender a usar a biblioteca.
Componentes de arquitetura
Room é o componente de arquitetura responsável pela persistência local na camada de dados de nossos aplicativos Android.
A seguir, é apresentado um diagrama genérico, onde vemos como ele se relaciona com os componentes ViewModel e LiveData.
Onde o Repositório é uma classe e encarregada de encapsular a lógica necessária para acessar fontes de dados como o Room.
Isso não faz parte dos componentes da arquitetura do Android, mas é um padrão que o Google recomenda usar.
Dessa forma, os dados fluem dos controladores de interface do usuário para o SQLite e operam o conjunto de dados.
E é aí que trabalharemos nessa série de tutoriais.
Componentes do Room
No diagrama acima, vimos vários objetos associados ao Room. Vamos ver do que se trata.
RoomDatabase
É o principal ponto de entrada para comunicar o restante do seu aplicativo com o esquema de dados relacionais.
Esta classee oculta a implementação de SQLiteOpenHelper
para facilitarnos el acceso a la base de datos.
Quando estendermos essa classee, veremos algo assim:
@Database(entities = {Product.classe}, version = 1) public abstract classee ProductsDatabase extends RoomDatabase { public abstract ProductDao productDao(); }
Objeto de acesso a dados (DAO)
Um DAO representa um mapeamento de operações SQL para métodos.
O que significa que criaremos, leremos, atualizaremos e excluiremos registros deles.
As operações normalmente serão assim:
Dao public interface ProductDao { @Query("SELECT * FROM product") List<Product> getAll(); @Insert void insert(Product product); @Delete void delete(Product product); }
Entity
A classe anotada que descreve uma tabela de banco de dados em Room.
Ou seja, um mapeamento do comando CREATE de uma tabela no SQLite.
Exemplo:
@Entity public classe Product { @PrimaryKey public String id; @ColumnInfo(name = "product_name") public String name; @ColumnInfo(name = "product_price") public float price; }
Implementação do Room
Para usar esta biblioteca, seguiremos os seguintes passos:
- Adicionar dependência de sala ao Gradle
- Criar uma entidade para cada modelo
- Criar DAO
- Subclass RoomDatabase
- Criar repositório
- Camada de dados de teste
- Migrações de teste
- Veremos como aplicar cada um nesta série de tutoriais, onde criaremos um App em listas de compras como exemplo.
Além disso, abordaremos recursos como:
- CRUDs
- Relações (um para um, 1 para muitos, muitos para muitos)
- Pesquisas
- Visualizações
- etc.