Total de visualizações de página

Persistencia de Dados Android - ROOM

Saudações pessoal, 

Tal como em outras linguagens o android também tem formas de persistência de dados.
Existem 4 metodos que passo a descrever: 

  • SharedPreferences: Armazenar dados particulares primitivos em pares chave-valor.
  • Internal Storage: Armazenar dados privados na memória do dispositivo. ( com persistência de objetos )
  • External Storage: Armazenar dados públicos sobre o armazenamento externo compartilhado.
  • SQLite Databases: Armazenar dados estruturados em um banco de dados privado.
Para esta secção vamos focar no SQLite Database.
Durante algum tempo usar "SQLite Database" cru ou uma api de terceiros foi a opção e em minha opinião trabalhosa.

Recentemente foi disponibilizada para a nossa alegria o ROOM  PERSISTENCE LIBRARY.

 O Room fornece uma camada de abstração sobre o SQLite para permitir o acesso fluente de banco de dados enquanto aproveita todo o poder do SQLite.

O que traz de bom? 
Trabalhar com o ROOM é extremamente fácil.  
Existem 3 componentes para facilitar o nosso trabalho.

Database: A classe que representa a base de dados.
Entity: Representa a tabela na base de dados.
DAO: contem os metodos para acesso a base de dados. 

Exemplo pratico:
Adicionar as dependências ao projecto.

    // Room
    implementation "android.arch.persistence.room:runtime:1.0.0"
    annotationProcessor "android.arch.persistence.room:compiler:1.0.0"

 Codificar:

User.java

@Entity
public class User {
    @PrimaryKey
    private int uid;

    @ColumnInfo(name = "first_name")
    private String firstName;

    @ColumnInfo(name = "last_name")
    private String lastName;

    // Getters and setters are ignored for brevity,
    // but they're required for Room to work.
}

UserDao.java

@Dao
public interface UserDao {
    @Query("SELECT * FROM user")
    List<User> getAll();

    @Query("SELECT * FROM user WHERE uid IN (:userIds)")
    List<User> loadAllByIds(int[] userIds);

    @Query("SELECT * FROM user WHERE first_name LIKE :first AND "
           + "last_name LIKE :last LIMIT 1")
    User findByName(String first, String last);

    @Insert
    void insertAll(User... users);

    @Delete
    void delete(User user);
}
 
 AppDatabase.java

@Database(entities = {User.class}, version = 1)
public abstract class AppDatabase extends RoomDatabase {
    public abstract UserDao userDao();
}


AppDatabase db = Room.databaseBuilder(getApplicationContext(),
        AppDatabase.class, "database-name").build();
 Espero que tires proveito das informações encontradas aqui e não esqueça de consultar sempre o site do Desenvolvedor Android







Nenhum comentário:

Postar um comentário

Comandos para conectar automaticamente o firebase com o flutter.

     dart pub global activate flutterfire_cli\n    export PATH="$PATH":"$HOME/.pub-cache/bin"\n    flutterfire configu...