Les annotations ont leur utilité, mais elles ne sont pas la solution miracle pour tuer la configuration XML. Je recommande de mélanger les deux !
Par exemple, si vous utilisez Spring, il est tout à fait intuitif d'utiliser XML pour la partie injection de dépendances de votre application. Cela permet d'éloigner les dépendances du code qui l'utilisera. En revanche, l'utilisation d'une sorte d'annotation dans le code qui a besoin des dépendances rend le code conscient de cette configuration automatique.
Cependant, au lieu d'utiliser XML pour la gestion des transactions, marquer une méthode comme transactionnelle avec une annotation est parfaitement logique, car il s'agit d'une information qu'un programmeur souhaiterait probablement connaître. Mais le fait qu'une interface va être injectée en tant que sous-typeY au lieu de sous-typeX ne devrait pas être inclus dans la classe, parce que si maintenant vous souhaitez injecter le sous-typeX, vous devez modifier votre code, alors que vous aviez de toute façon un contrat d'interface auparavant, donc avec XML, vous auriez juste besoin de modifier les mappages XML et c'est assez rapide et sans douleur de le faire.
Je n'ai pas utilisé les annotations JPA, donc je ne sais pas si elles sont bonnes, mais je dirais que laisser le mappage des beans à la base de données en XML est aussi une bonne chose, car l'objet ne devrait pas se soucier de l'origine de ses informations, il devrait juste se soucier de ce qu'il peut faire avec ses informations. Mais si vous aimez JPA (je n'ai pas d'expérience avec lui), par tous les moyens, allez-y.
En général : Si une annotation fournit une fonctionnalité et agit comme un commentaire en soi, et ne lie pas le code à un processus spécifique afin de fonctionner normalement sans cette annotation, alors optez pour les annotations. Par exemple, une méthode transactionnelle marquée comme étant transactionnelle ne tue pas sa logique de fonctionnement, et sert également de bon commentaire au niveau du code. Sinon, il est probablement préférable d'exprimer ces informations en XML, car même si elles affecteront éventuellement le fonctionnement du code, elles ne changeront pas la fonctionnalité principale du code, et n'ont donc pas leur place dans les fichiers sources.