Vidéo: STOCKER FACILEMENT VOS DONNEES DANS UN FICHIER JSON ! (Présentation de projets d'abonnés) 2025
Interposer une classe qui sert de médiateur entre l'objet en mémoire et la base de données est une approche facilitant la gestion des objets persistants pour les applications iOS. Ce modèle est appelé Data Mapper. La figure ci-dessous montre l'interaction entre les classes dans une version simple du Data Mapper.
Fondamentalement, toutes les opérations persistantes qui accèdent à la base de données (c'est-à-dire créer, récupérer, mettre à jour et supprimer) sont la responsabilité du Data Mapper. L'application effectue simplement les demandes appropriées du Data Mapper.
Le modèle Data Mapper est une abstraction grâce à laquelle vous pouvez gérer les objets persistants lorsque leur gestion du cycle de vie est complexe. En fait, avec Data Mapper, les objets en mémoire n'ont même pas besoin de savoir qu'une base de données est présente; ils n'ont pas besoin de SQL ou de toute connaissance du schéma de base de données.
Implémenter un bon Data Mapper est compliqué. Par exemple, les méthodes dans Active Record suggèrent qu'une seule invocation (telle qu'une méthode finder) aboutit à une requête SQL. Ce n'est pas toujours vrai. Le chargement d'un objet avec plusieurs objets contenus, par exemple, pourrait nécessiter le chargement des éléments de campagne. Si les objets sont complexes, une requête de recherche pourrait charger un graphique entier d'objets.
Les mappeurs peuvent avoir besoin de manipuler des classes qui se transforment en plusieurs champs dans plusieurs tables, des classes avec héritage, et de relier des objets une fois qu'ils sont extraits du magasin de données. La couche de mappage du magasin de données doit comprendre quels objets ont été modifiés, lesquels ont été créés et lesquels ont été détruits.
Si plusieurs mises à jour sont effectuées sur les enregistrements persistants d'un ensemble d'objets, alors toutes ces manipulations devront avoir lieu à l'intérieur d'une transaction. Le modèle Data Mapper permet souvent à Active Record de gérer des objets uniques, tandis que Data Mapper prend en charge des exigences complexes telles que l'héritage, la récupération et la liaison d'objets complexes, les requêtes basées sur des relations complexes, etc..
Le Data Mapper agit comme un vrai gestionnaire d'objets en déléguant des opérations de niveau objet à Active Record. Cela permet une meilleure conception OO globale car Mapper gère de manière cohérente la responsabilité du gestionnaire, tandis que Active Record gère la simple persistance de l'objet (également de manière cohérente). En outre, la stratégie de gestion est séparée du mécanisme de persistance. Par conséquent, la politique de gestion et les mécanismes de persistance sont faiblement couplés.
Enfin, le modèle Data Mapper (avec quelques variantes) est devenu une partie essentielle d'iOS avec la mise à disposition du composant Core Data dans iOS.
