Application et analyse de principe du stockage de données Android et de la base de données Room

Application et analyse de principe du stockage de données Android et de la base de données Room

1. Comparaison des méthodes de stockage

Android propose actuellement les quatre méthodes de stockage de données courantes suivantes :

méthode de stockage caractéristiques scènes à utiliser
Préférences partagées 1. Seuls cinq types de booléen, int, float, long et String
peuvent être stockés. 2. Stockage de paires clé-valeur
Enregistrer diverses informations de configuration de l'application
stockage de fichiers 1. Des fichiers de différents formats peuvent être stockés dans le téléphone
2. Par défaut, ils ne peuvent pas être partagés entre les applications
1. Package Zip téléchargé depuis le réseau
2. Stockage des fichiers txt
Fournisseur de contenu 1. Les données peuvent être partagées entre les applications
2. Accès via des objets uri
Audio, vidéo, lecture et écriture d'images
SQLite stocke les données 1. Peut stocker des données structurées
2. Il est plus pratique d'ajouter, de supprimer, de modifier et de vérifier des données
enregistrer les données de diffusion

2. Présentation de la salle et cas pratiques

Chambre

Room fait partie de la famille Google Jetpack. Room fournit une couche d'abstraction au-dessus de SQLite pour permettre un accès fluide à la base de données tout en tirant pleinement parti des fonctionnalités puissantes de SQLite.

Client
Room
SupportSQLiteOpenHelper

trois composants principaux

1. Classe de base de données (Database) , qui est utilisée pour enregistrer la base de données et servir de point d'accès principal pour la connexion sous-jacente des données persistantes de l'application.
2. Entité de données (Entity) , qui est utilisée pour représenter une table dans la base de données de l'application.
3. Data Access Object (Dao) , qui fournit des méthodes que votre application peut utiliser pour interroger, mettre à jour, insérer et supprimer des données dans la base de données.

Accès à la salle

1. Ajoutez les éléments suivants aux dépendances du fichier build.gradle dans le répertoire Gradle :

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

2. Conception de la base de données , ce qui suit suppose qu'une table est conçue, que le nom de la table est user et que la table de données contient trois champs : uid, first_name et last_name

uid prénom nom de famille
1 ouvrir certain
2 prune certain
3 liu certain
4 Merci certain

3. Créer une nouvelle entité : définissez une entité de données utilisateur, chaque instance de l'utilisateur représente une ligne de la table des utilisateurs dans la base de données de l'application.

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

Remarques :
1. Toutes les propriétés doivent être publiques ou avoir des méthodes get et set
2. @PrimaryKey : Indique une clé primaire unique, qui peut aider à générer des valeurs de clé lorsque la clé primaire est nulle et que autoGenerate est vrai
3. @ColumInfo : Annotation pour les noms de colonne

4. Ajouter DAO : Définissez un DAO nommé UserDao. Utilisé pour ajouter, supprimer, modifier et interroger la table User

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

    @Insert
    void insert(User user);
}

5. Créez une nouvelle classe de base de données et configurez la base de données, et les quatre conditions suivantes doivent être remplies :

1. Ajoutez une sous-classe abstraite de RoomDatabase.
2. La sous-classe doit ajouter l'annotation @Database(entities=[xxx],version=n), les entités contiennent des entités de données, et les tables correspondantes seront créées dans cette base de données, et version est le numéro de version de la base de données.
3. Pour chaque classe DAO associée à la base de données, la classe de base de données doit définir une méthode abstraite sans paramètres et renvoyer l'instance de classe DAO

6. Obtenez l'objet DAO, vous pouvez ajouter, supprimer, modifier et vérifier la base de données

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);
        }

Présentation du principe

1. Pendant la période de compilation, Room traitera les annotations @Dao et @DataBase, et générera la classe d'implémentation Impl de DAO et Database.
AppDatabase_Impl : l'implémentation spécifique de l'instance de base de données, qui est générée automatiquement, a principalement les méthodes suivantes

  • createOpenHelper() : lorsque Room.databaseBuilder().build() crée une base de données, il appelle createOpenHelper() de la classe d'implémentation pour créer SupportSQliteOpenHelper, qui est utilisé pour créer une base de données et gérer les versions.
  • userDao():创建UserDao_Impl
  • UserDao_Impl : principalement les 3 variables membres suivantes et l'interface définie dans UserDao

__db:RoomDatabase instance
__insertionAdapterOfUser:EntityInsertionAdapterd instance, utilisée pour l'insertion de données
__deletionAdapterOfUser:EntityDeletionOrUpdateAdapter instance, utilisée pour la mise à jour/suppression de données

Instructions spécifiques :
par exemple, UserDao_Impl#insertAll() utilisera d'abord __db pour démarrer la transaction, puis utilisera __insertionAdapterOfUser pour effectuer l'opération d'insertion.


Le contenu ci-dessus fait référence à l'analyse du principe Room de la bibliothèque persistante Android Room et d'autres articles composants jetpack


Déclaration de droit d'auteur : cet article est un article original du blogueur CSDN "Curlyhairdog", conformément à l'accord de droit d'auteur CC 4.0 BY-SA, veuillez joindre le lien source original et cette déclaration pour réimpression.
Lien d'origine : https://blog.csdn.net/m0_53185556/article/details/128168899?spm=1001.2014.3001.5501

Je suppose que tu aimes

Origine blog.csdn.net/fjnu_se/article/details/128207912
conseillé
Classement