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"
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.
}
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);
}
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();
}
public abstract class AppDatabase extends RoomDatabase {
public abstract UserDao userDao();
}
AppDatabase db = Room.databaseBuilder(getApplicationContext(),
AppDatabase.class, "database-name").build();
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
- Fonte 1: https://www.devmedia.com.br/persistencia-de-dados-no-android/26947
- Fonte 2: https://developer.android.com/training/data-storage/room/index.html
Nenhum comentário:
Postar um comentário