Mini projet et tutoriel android sur les bases de données internes avec SQLite Room


Dans cet article on va apprendre à travailler avec Android Room database pour créer et manipuler des bases de données internes SQLite au niveau de nos applications android.

Autrefois, nous étions capable de créer notre base, nos tables et nos données grâce à SQLiteOpenHelper et SQLiteDatabase. Ce qui engendrait la saisie d'une grande quantité de code standard  pour créer et manipuler même une très petite base de données. De plus, aucune vérification au moment de la compilation des requêtes SQL brutes n'a été possible.  Et si le schéma de la base est modifié, nous étions obligé de mettre à jour les requêtes SQL concernés. 

Mais maintenant avec Jetpack libraries nous sommes devenu capable de créer et manipuler nos bases de données internes de manières plus flexible grâce à Room library.

La librairie Room fournit une couche d'abstraction sur SQLite, ce qui permet un accès plus robuste à la base de données  tout en offrant toute la puissance de SQLite. Room est une librairie ORM, Object Relational Mapping. En d'autres termes, Room mappera nos objets de base de données sur des objets Java et fournit une couche d'abstraction sur SQLite pour permettre un accès fluide à la base de données tout en exploitant toute la puissance de SQLite.

Dans cet article, nous allons créer un mini projet de gestionnaire de contacts tout en discutant les bases de l'utilisation de la bibliothèque Room et de la manière dont elle peut améliorer votre flux de travail en tant que développeur.

La librairie Room se compose de 3 composants principaux:

Entity:

Il s'agit généralement d'une classe Pojo (Plain Old Java Object). L'entité représente une table dans la base de données et doit être annotée avec @Entity. Chaque entité se compose d'au moins un champ pour définir une clé primaire. Spécifiez le nom de la table si vous souhaitez qu'il soit différent du nom de la classe en ajoutant à l'annotation ce qui mis entre parenthèses: @Entity(tableName = “name_of_your_table”).

Chaque entité a besoin d'une clé primaire. On peut spécifier la clé primaire en ajouter l'annotation @PrimaryKey avant l'attribut (variable de classe) concerné. Pour les autres variables, si vous voulez que le nom de la colonne dans la table  soit différent du nom de la variable, vous pouvez lui ajouter cette annotation @ColumnInfo(name = “name_of_your_column”).

Il faut noter que chaque champ (représenté par une variable da classe) dans la base de données doit être public ou avoir une méthode «getter».

DAO (Data Access Object):

Dans Room, vous utilisez des objets d'accès aux données pour accéder et gérer vos données. Le DAO est le composant principal de Room et comprend des méthodes qui offrent un accès à votre base de données, il s'agit d'une interface Java qui doit être annoté avec @Dao. Les DAO sont utilisés à la place des générateurs de requêtes et vous permettent de séparer différents composants de votre base de données, ce qui vous permet de tester facilement votre base de données.

Database:

Sert de détenteur de la base de données et est le principal point d'accès à vos données relationnelles. Il doit être annoté avec @Database et hérite de la classe RoomDatabase. Il contient et renvoie également le Dao (objet d'accès à la base de données). Choses à savoir ici :

• Il s'agit d'une classe abstraite qui doit étendre RoomDatabase.

• Il doit être annoté avec @Database, et il reçoit une liste d'entités avec toutes les classes qui composent la base de données (toutes ces classes doivent être annotées avec @Entity). Nous devons également fournir une version de base de données.

• Nous devons déclarer une méthode abstraite pour chacune des entités incluses dans l'annotation @Database. Cette fonction doit renvoyer le DAO correspondant (une classe annotée avec @DAO).

• Enfin, nous déclarons un objet  pour obtenir un accès statique à la méthode getAppDatabase, qui nous donne une instance singleton de la base de données. Nous avons défini un singleton, AppDatabase, pour éviter d'ouvrir plusieurs instances de la base de données en même temps.

getAppDatabase renvoie le singleton. Il créera la base de données lors de son premier accès, en utilisant le générateur de base de données de Room pour créer un objet RoomDatabase dans le contexte de l'application à partir de la classe AppDatabase et le nomme "contactsManager".

Donc dans ce projet on va créer une base de données qui porte le nom de contactsManager qui contient une seule table nommée contact (_id contact_namecontact_phone).

Dans cette vidéo vous allez trouver le code source et l'explication pour la réalisation de ce mini projet: 





Commentaires

Posts les plus consultés de ce blog

Ionic 2 : Envoie d'une image vers un serveur web à l'aide de PHP et Angular 2

Premier tutoriel avec Arduino et Proteus ISIS

Login et password ,formulaire d'authentification sous android avec mysql et json