La base de données
Comment bien utiliser ORMLite pour communiquer avec la base de données ?
Table des matières
L'ORM
Le plugin OpenMC utilise l'ORM ORMLite pour communiquer plus facilement avec la base de donnés (dans notre cas MySQL). Un ORM c'est un Object Relational Mapping, soit un système qui permet de relier les tables et colonnes d'un schéma de DB traditionnel avec des objets Java. Ce guide vous expliquera les bases d'ORMLite et son intégration dans le plugin. Si vous voulez plus d'informations ou juste des docs plus détaillées du système, rendez-vous sur l'excellente documentation officielle d'ORMLite.
Intégrer un manager avec ORMLite
Nous prendrons l'exemple des maires pour ce guide (soit les classes Mayor et MayorManager).
Créer un objet à stocker
Avec ORMLite chaque table de la base de donnés est représentée par un objet Java.
Dans un premier temps, pour qu'un objet puisse être utilisé par ORMLite il lui faut un constructeur sans arguments avec une visibilité au niveau du package.
Ensuite, il faut que la classe et ses membres soient annotés par les interfaces @DatabaseTable et @DatabaseField.
L'interface @DatabaseTable permet de configurer l'aspect général de la table. Il doit être placé sur la déclaration de la classe. Vous pouvez utiliser le paramètre tableName pour changer le nom de la table. Par défaut c'est le nom de la classe.
L'interface @DatabaseField permet de configurer les colonnes de la table. Pour qu'ils soient détectés, les membres doivent être annotés par cette interface. Si un membre n'est pas annoté, il ne sera pas sauvegardé dans la DB. Quelques paramètres utiles :
columnName: Le nom de la colonne. Le nom du membre par défaut.id: Si ce membre est l'ID de la table. Peut être utilisé qu'une seule fois par table.generatedId: Si l'ID doit être généré automatiquement.unique: Si ce membre doit être unique.canBeNull: Si ce membre peut être nul. Utile pour le stockage d'UUID.defaultValue: La valeur par défaut de la colonne. Doit être unStringmême si la variable a un type différent (ex.defaultValue = "0")
Initialiser la table et le DAO
DAOPar convention dans la codebase OpenMC, le base de donnés est initialisée par le DatabaseManager a travers une fonction init_db. Cette fonction doit créer la/les table(s) si elle(s) n'existe(nt) pas et initialiser le DAO. Le Data Access Object est l'objet qui permet d'interagir avec la table associée de la DB.
Le Dao doit être initialisé avec le type à stocker dans la DB et le type du membre annoté avec id = true. Si le type n'a pas d'ID, un type quelconque peut être utilisé.
Attention, si vous utilisés le Dao dans la fonction init_db cela risque de bloquer les unit tests (je pense que c'est un problème avec les driver h2 mais je ne suis pas sûre).
Utiliser le DAO
DAOMaintenant que vous avez votre table et votre DAO, vous pouvez commencer à manipuler la base de donnés. Voici quelque fonctions utiles :
queryForAll: Retourne une liste du type stocké. Ex.List<Mayor>queryForId: Retourne l'élément avec l'ID donné.create: Sauvegarde l'objet ou la liste d'objets donné(e).update: Met à jour l'objet donné (fonctionne uniquement si le type a unid = true).createOrUpdate: Créé l'objet si il n'existe pas et le met à jour s'il existe (fonctionne uniquement si le type a unid = true).delete: Supprime l'objet donné.
Vous pouvez aussi créer des requêtes plus complexes à l'aide du QueryBuilder et du DeleteBuilder.
Pour plus d'informations rendez-vous sur la documentation officielle.
Bonnes pratiques
Garder le
Daoenprivatesans@Getterafin de garder localiser les interactions avec la DB.Mettre les operations de sauvegarde dans des fonction asynchrones pour de meilleurs performances.
Rédigé par PiquelChips
Mis à jour
Ce contenu vous a-t-il été utile ?

