37 votes

Pourquoi les gens continuent-ils à utiliser des fichiers de cartographie xml au lieu d'annotations ?

J'ai observé le fait étrange (basé sur les questions dans le tag hibernate) que les gens utilisent encore activement des fichiers xml au lieu d'annotations pour spécifier leurs mappings ORM (Hibernate/JPA).

Il y a quelques cas où cela est nécessaire :

  • vous utilisez des classes qui sont fournies, et vous voulez les mettre en correspondance.
  • vous écrivez une API, dont les classes de domaine peuvent être utilisées sans fournisseur JPA, et vous ne voulez donc pas forcer une dépendance JPA/Hibernate.

Mais ce ne sont pas des cas courants, je pense.

Mes hypothèses sont les suivantes :

  • les gens sont habitués aux fichiers xml et ne se sentent pas à l'aise / ne veulent pas prendre la peine d'apprendre à utiliser l'approche d'annotation.
  • Java pre-1.5 est imposé au projet et il n'y a rien à y faire
  • les gens ne savent pas que les annotations sont un remplacement complet du mapping xml.
  • les systèmes existants sont pris en charge et le changement d'approche est donc considéré comme risqué
  • les gens craignent que le mélange d'annotations (méta-informations) avec leurs classes soit une erreur.

D'autres explications possibles ?

52voto

kem Points 772

La couche de domaine et la couche de persistance sont considérées par certains comme des préoccupations distinctes. L'utilisation de l'approche purement XML permet de maintenir un couplage aussi lâche que possible entre les deux couches ; l'utilisation d'annotations permet de coupler les deux couches plus étroitement, car le code lié à la persistance est intégré au code du domaine.

21voto

BalusC Points 498232
  • Manque d'aperçu de ce qui a été cartographié. Il faut creuser dans le code source.

9voto

ChssPly76 Points 53452

les gens ne savent pas que les annotations sont un remplacement complet du mapping xml. .

Ah, mais ils ne le sont pas. Trois cas me viennent à l'esprit (il y en a probablement d'autres) que vous ne pouvez pas (bien) faire avec des annotations :

  1. Utiliser la formule comme partie de la clé d'association (il est vrai, plutôt ésotérique).
  2. Joindre-via-sous-sélectionner - @Loader n'est pas un remplacement adéquat. Pas trop commun mais très utile. Envers offre une autre approche viable.
  3. Perte de l'ordre des colonnes pour la génération de schémas. C'est une vraie plaie. Je comprends pourquoi c'est fait de cette façon, mais ça m'ennuie quand même au plus haut point.

Mais ne vous méprenez pas : les annotations sont formidables, et encore plus lorsqu'elles sont associées à Validator (bien que, là encore, le point 3 ci-dessus ne fasse pas le poids). Elles fournissent également certains aspects de la fonctionnalité que les mappings XML ne fournissent pas.

4voto

David Rabinowitz Points 14133

Utilisation de XML pour compléter les annotations, lorsqu'une configuration spécifique à l'environnement ou au système est nécessaire.

3voto

MattMcKnight Points 4736

Au départ, j'ai trouvé la syntaxe des annotations très bizarre. Elle ressemble à du bruit de ligne et se mélange à l'endroit où je mets habituellement les commentaires. Mais c'est beaucoup mieux que de gérer les fichiers XML, car toutes les modifications se trouvent au même endroit, dans le fichier modèle. L'une des limites de l'annotation est peut-être la collision possible avec d'autres annotations, mais je n'ai pas encore vu cela.

Je pense que la vraie raison pour laquelle elle n'est pas plus utilisée est qu'elle n'est pas vraiment considérée comme la solution par défaut. Vous devez utiliser un fichier jar supplémentaire. Il devrait faire partie du noyau et l'approche XML devrait être optionnelle.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X