Aplicação e análise de princípio de armazenamento de dados Android e banco de dados Room

Aplicação e análise de princípio de armazenamento de dados Android e banco de dados Room

1. Comparação de métodos de armazenamento

Atualmente, o Android tem os seguintes quatro métodos comuns de armazenamento de dados:

método de armazenamento características cenas a serem usadas
Preferências Compartilhadas 1. Apenas cinco tipos de boolean, int, float, long e String
podem ser armazenados. 2. Armazenamento de par chave-valor
Registre várias informações de configuração do aplicativo
armazenamento de arquivo 1. Arquivos em vários formatos podem ser armazenados no telefone.
2. Por padrão, eles não podem ser compartilhados entre aplicativos
1. Pacote zip baixado da rede
2. Armazenamento de arquivos txt
Provedor de conteúdo 1. Os dados podem ser compartilhados entre aplicativos
2. Acesso por meio de objetos uri
Áudio, vídeo, leitura e escrita de imagens
SQLite armazena dados 1. Pode armazenar dados estruturados
2. É mais conveniente adicionar, excluir, modificar e verificar dados
salvar dados de streaming

2. Apresentação da sala e casos práticos

Sala

O Room é um membro da família Google Jetpack. O Room fornece uma camada de abstração sobre o SQLite para permitir acesso fluente ao banco de dados enquanto aproveita ao máximo os poderosos recursos do SQLite.

Client
Room
SupportSQLiteOpenHelper

três componentes principais

1. Classe de banco de dados (Database) , que é usada para salvar o banco de dados e servir como o principal ponto de acesso para a conexão subjacente dos dados persistentes do aplicativo.
2. Entidade de dados (Entity) , que é usada para representar uma tabela no banco de dados do aplicativo.
3. Data Access Object (Dao) , que fornece métodos que seu aplicativo pode usar para consultar, atualizar, inserir e excluir dados no banco de dados.

Acesso ao quarto

1. Adicione o seguinte às dependências do arquivo build.gradle no diretório Gradle:

implementation "androidx.room:room-common:2.4.2"
implementation "androidx.room:room-compiler:2.4.3"

2. Projeto de banco de dados , o seguinte pressupõe que uma tabela foi projetada, o nome da tabela é usuário e a tabela de dados contém três campos: uid, first_name e last_name

uid primeiro nome sobrenome
1 abrir certo
2 ameixa certo
3 liu certo
4 Obrigado certo

3. Crie uma nova entidade : defina uma entidade de dados do usuário, cada instância do usuário representa uma linha da tabela do usuário no banco de dados do aplicativo

@Entity
public class User {
    
    
    @PrimaryKey(autoGenerate = true)
    private Integer id;
    @ColumnInfo(name="first_name")
    private String firstName;
    @ColumnInfo(name="last_name")
    private String lastName;
}

Notas:
1. Todas as propriedades devem ser públicas ou ter métodos get e set
2. @PrimaryKey: Indica uma única chave primária, que pode ajudar a gerar valores de chave quando a chave primária é nula e autoGenerate é verdadeiro
3. @ColumInfo: Anotação para nomes de colunas

4. Adicionar DAO : Defina um DAO chamado UserDao. Usado para adicionar, excluir, modificar e consultar a tabela de usuários

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

    @Insert
    void insert(User user);
}

5. Crie uma nova classe de banco de dados e configure o banco de dados, e as quatro condições a seguir devem ser atendidas:

1. Adicione uma subclasse abstrata de RoomDatabase.
2. A subclasse precisa adicionar a anotação @Database(entities=[xxx],version=n), as entidades contêm entidades de dados e as tabelas correspondentes serão criadas neste banco de dados, e a versão é o número da versão do banco de dados.
3. Para cada classe DAO associada ao banco de dados, a classe do banco de dados deve definir um método abstrato sem parâmetros e retornar a instância da classe DAO

6. Obtenha o objeto DAO, você pode adicionar, excluir, modificar e verificar o banco de dados

AppDateBase db = Room.databaseBuilder(this, AppDateBase.class, "database-name")
                .allowMainThreadQueries()
                .build();
        UserDao userDao = db.userDao();

/*        User user1 = new User(1,"张","某");
        User user2 = new User(2,"李","某");
        User user3 = new User(3,"刘","某");
        User user4 = new User(4,"谢","某");
        userDao.insert(user1);
        userDao.insert(user2);
        userDao.insert(user3);
        userDao.insert(user4);*/

        List<User> all = userDao.getAll();
        for(User user:all){
    
    
            System.out.println(user);
        }

Introdução do princípio

1. Durante o período de compilação, a Room processará as anotações @Dao e @DataBase e gerará a classe de implementação Impl do DAO e do banco de dados.
AppDatabase_Impl : a implementação específica da instância do banco de dados, que é gerada automaticamente, possui principalmente os seguintes métodos

  • createOpenHelper(): Quando Room.databaseBuilder().build() cria um Banco de Dados, ele chamará createOpenHelper() da classe de implementação para criar SupportSQliteOpenHelper, que é usado para criar BD e gerenciar versões.
  • userDao():创建UserDao_Impl
  • UserDao_Impl : principalmente as 3 variáveis ​​de membro a seguir e a interface definida em UserDao

__db:RoomDatabase instance
__insertionAdapterOfUser:EntityInsertionAdapterd instance, usada para inserção de dados
__deletionAdapterOfUser:EntityDeletionOrUpdateAdapter instance, usada para atualização/exclusão de dados

Instruções específicas:
Por exemplo, UserDao_Impl#insertAll() usará primeiro __db para iniciar a transação e, em seguida, usará __insertionAdapterOfUser para executar a operação de inserção.


O conteúdo acima refere-se à análise do princípio Room da biblioteca persistente do Android Room e outros artigos componentes do jetpack


Declaração de direitos autorais: Este artigo é um artigo original do blogueiro CSDN "Curlyhairdog", seguindo o contrato de direitos autorais CC 4.0 BY-SA, anexe o link da fonte original e esta declaração para reimpressão.
Link original: https://blog.csdn.net/m0_53185556/article/details/128168899?spm=1001.2014.3001.5501

Acho que você gosta

Origin blog.csdn.net/fjnu_se/article/details/128207912
Recomendado
Clasificación