• des "guidelines" qui forcent le développeur à produire du code maintenable et évolutif
  • des outils pour prendre en charge des tâches techniques, telles que la persistence (=la sauvegarde de données)

Ce concept de mapping consiste à effectuer la liaison entre des objets, c'est à dire n'importe quel objet réel ou conceptuel, un compte bancaire par exemple, et sa représentation en terme de données (nom du possesseur du compte, solde du compte, date d'ouverture du compte, par exemple), que ce soit sous forme XML ou base de données relationnelle (un bonne vieille base SQL, pour ceux du fond).
Les problèmes qui émergent ici, sont les suivants :

  • évolutivité : quand je modifie mon objet, comment évolue sa représentation en base ou dans mon fichier XML?
  • maintenabilité : comment faciliter au maximum la maintenance des mapping lors d'évolutions?
  • abstraction : j'ai un objet Java, que je veux sauvegarder, mais la mécanique de sauvegarde ne m'intéresse pas, je veux la déléguer à un framework qui s'occupe de tout ! Cool du boulot en moins. 8-)

Les outils qui s'offrent à nous pour traiter correctement ces problèmes sont les suivants :

  • des frameworks de mapping objet-relationnel (pour les bases de données relationnelles) tel Hibernate, en Java
  • des API de mapping objet-XML pour parser, créer, traiter des fichiers XML représentatifs d'objets Java, comme JAXB en Java.

Les possibilités que j'ai utilisé jusqu'à présent sont les suivantes (il doit en exister beaucoup d'autres...) :

  • Hibernate fournit les outils pour créer, à partir d'une base de données existantes, le code Java correspondant en termes d'objets.
  • Idem pour Jaxb, qui à partir d'un fichier de configuration de type XSD (anciennement DTD) produit les classes Java représentant le ou les objets.

Non mais on se demande comment on a pu se passer de ça dnas l'ancine temps...Avant, ajouter le champ prénom à mon objet compte bancaire implicait pleins de modifications en cascade pour la gestion de la sauvegarde, de la lecture du compte etc...Maintenant, on ajoute le champ en base, on regénère le code Java avec nos outils et c'est fait.

  1. Gain de temps immédiat.
  2. On ne touche à rien pour ce qui est du parsing des données dans le cas du XML. Donc ma classe métier qui charge l'objet va bénéficier de nouveaux contrôles de structure, mais sans être modifiée...héhé.