Vaut-il la peine de passer d’un fichier de mappage hibernation conçu à la main à des annotations?

StackOverflow https://stackoverflow.com/questions/82223

  •  09-06-2019
  •  | 
  •  

Question

J'ai une application Web dont la base de code originale a été développée avec un fichier de mappage hibernate conçu à la main. Depuis lors, je maîtrise assez bien le codage de mon fichier hbm.xml. Mais tous les enfants cools utilisent des annotations de nos jours.

La question est donc la suivante: Cela vaut-il la peine de refactoriser mon code pour utiliser des annotations de veille prolongée? Est-ce que je gagnerai autre chose que d'être moderne et branché? Vais-je perdre le contrôle que j'ai sur mon fichier de mappage codé à la main existant?

Une sous-question est la suivante: quels efforts cela va-t-il? J'aime mes bases de données sveltes et moyennes. Le mappage ne couvre qu'une douzaine d'objets de domaine, y compris deux ensembles, des sous-classes et environ 8 tables.

Merci, chers SOpedians, d’avance pour vos avis éclairés.

Était-ce utile?

La solution

"S'il n'est pas cassé, ne le corrigez pas!"

Je suis un type à l'ancienne de POJO / POCO de toute façon, mais pourquoi changer d'annotation pour être cool? Autant que je sache, vous pouvez faire la plupart des choses sous forme d'annotations, mais les correspondances les plus complexes sont parfois exprimées plus clairement en XML.

Autres conseils

L’utilisation d’annotations au lieu d’un fichier de mappage externe vous permettra d’obtenir que vos informations de mappage se trouveront dans des classes et des champs, ce qui améliorera la maintenabilité. Vous ajoutez un champ, vous ajoutez immédiatement l'annotation. Vous en supprimez un, vous supprimez également l'annotation. vous renommez une classe ou un champ, l'annotation est là et vous pouvez également renommer la table ou la colonne. vous faites des changements dans l'héritage de classe, c'est pris en compte. Vous n'êtes pas obligé d'aller éditer un fichier externe un peu plus tard. cela rend le tout plus efficace et moins sujet aux erreurs.

D'un autre côté, vous perdrez la vue globale que votre fichier de mappage avait l'habitude de vous donner.

J'ai récemment fait les deux dans un projet et j'ai trouvé:

  1. Je préfère écrire des annotations au format XML (fonctionne bien avec le typage statique de Java, l'auto-complétion dans l'EDI, le refactoring, etc.). J'aime voir tout ce qui est tissé ensemble plutôt que de faire des allers-retours entre code et XML.
  2. Encode les informations de la base de données dans vos classes. Certaines personnes trouvent cela grossier et inacceptable. Je ne peux pas dire que ça m'a dérangé. Cela doit aller quelque part et nous allons reconstruire le WAR pour qu'il y ait un changement.
  3. Nous sommes allés jusqu'à l'annotation JPA, mais il existe des cas où les annotations JPA ne suffisent pas. Nous avons donc dû utiliser les annotations Hibernate ou la configuration pour modifier.
  4. Notez que vous pouvez réellement utiliser les annotations ET les fichiers hbm. Peut-être un bel hybride qui spécifie la partie O dans les annotations et R dans les fichiers hbm, mais qui semble causer plus de problèmes que ça ne vaut la peine.

Même si j'aime passer à des choses nouvelles et potentiellement meilleures, je ne dois pas oublier de ne pas déconner avec des choses qui ne sont pas brisées. Donc, si les mappages de veille prolongée dans un fichier séparé fonctionnent pour vous maintenant, je ne le changerais pas.

Je préfère définitivement les annotations, les ayant utilisées à la fois. Ils sont beaucoup plus faciles à gérer et comme vous n’avez pas à traiter autant de classes à reprogrammer, je dirais que cela en vaut la peine. Les annotations facilitent beaucoup la refactorisation.

Toutes les fonctionnalités sont supportées à la fois dans le XML et dans les annotations. Vous pourrez toujours remplacer vos annotations avec la déclaration xml.

En ce qui concerne l’effort, je pense que cela en vaut la peine car vous pourrez tout voir en un seul endroit et ne pas basculer entre votre code et le fichier xml (à moins que vous utilisiez bien entendu deux moniteurs;))

  

La seule chose que vous gagnerez en utilisant   annotations

Je dirais probablement que c'est ce que vous voulez tirer de l'utilisation des annotations. Parce que vous n’obtenez pas la sécurité de compilation avec NHibernate, c’est la meilleure chose à faire.

  

"S'il n'est pas cassé, ne le corrigez pas!"

@Macka - Merci, j'avais besoin d'entendre ça. Et merci à tous pour vos réponses.

Alors que je suis très chanceux d’avoir un fou degré de contrôle professionnel et créatif sur mon travail, et que je peux utiliser pratiquement n'importe quelle technologie, bibliothèque, ou un outil pour n’importe quelle raison (à l’exception de matériel coûteux), y compris "parce que tous les enfants cools l’utilisent" ... Il n’a pas vraiment de sens de reporter ce qui représente une partie importante de la noyau d'un projet existant.

Je vais essayer quelques temps des annotations Hibernate ou JPA avec un projet en champ vert. Malheureusement, je reçois rarement de nouveaux projets complètement indépendants.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top