Mise en place de la librairie Room

Objectifs

  • Créer la base de donnée Room

  • Définir les objets qui la composeront

  • Définir les données brutes à mettre en base

Contexte

Pour que nos informations puissent circuler naturellement nous devons les encapsuler dans les classes objets qui représentent les entités de notre base de données room.

Fondamental

Dans notre cas, toutes les données qui circulent à travers l'application sont, soit des données liées aux questions de notre quiz (intitulé de la question, réponse, etc.), soit des données liées à l'utilisateur connecté (score, identifiants, etc.).

Base de données room :

La base de donnée est définie avec un compagnon object pour s'assurer de n'avoir qu'une instance.

On inclut également nos DAO (Data Access Object) vu précédemment qui permettent d'accéder à nos données.

On précise dans l'annotation « entities », les entités qui composeront la base.

Puis on définit nos deux entités :

Entité utilisateurs

Entité Question

L'annotation @Entity de room nous permet de changer le nom de la table en bdd qui aurait été par défaut égal au nom de la classe.

@PrimaryKey nous permet de préciser que le champ suivant représente la clé primaire de la table et qu'elle s'auto-incrémente grâce à « autogenerate = true ».

À noter que nous utilisons ici directement les entités issues de notre base de données locale partout dans notre application.

Dans le contexte d'un plus gros projet, il est préférable d'avoir une classe objet pour la base de données et une classe objet pour la partie model de l'application. En effet, ces deux classes peuvent avoir des définitions et des besoins différents.

Remarque

Ces objets seront ensuite utilisés dans notre écran de quiz pour afficher le score actuel de l'utilisateur ainsi que les questions.