Comment décidez-vous dans quelles classes d'entités à mettre des annotations JPA NamedQuery?

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

  •  18-09-2019
  •  | 
  •  

Question

Dire que j'ai un client - un à plusieurs CustomerOrder relation bidirectionnelle avec la CustomerOrder tenant la valeur totale de chaque commande

.

Si j'avais une requête pour trouver la valeur totale de toutes les commandes pour un client particulier:

select SUM(o.orderValue) from CustomerOrder o where o.customer = :customer

Est-il important dans quelle classe entité est ce annotées? Pourquoi voudriez-vous mettre dans l'un ou l'autre?

Était-ce utile?

La solution

  

Est-il important dans quelle classe entité est ce annotées?

D'un point de vue technique, il n'a pas d'importance que vous utiliserez le name d'un @NamedQuery pour l'appeler.

  

Pourquoi voudriez-vous mettre dans l'un ou l'autre?

Mais, d'un point de vue « logique », en mettant l'@NamedQuery où est « naturellement » appartient va certainement faciliter l'entretien. Dans votre exemple, je mettrais la requête dans l'entité CustomerOrder parce que la requête est de trouver CustomerOrder, c'est juste où je vous attendez à trouver si je devais chercher.

Autres conseils

Il n'a pas d'importance. Le principe général est de le mettre là où il appartient logiquement. Dans votre cas - il vaut mieux être dans CustomerOrder

Mettez-les dans les fichiers de mappage XML qui doivent être déclarées dans le persistence.xml. Voir ce grand lien: Arjan -tijms.omnifaces.org/2010/09/where-to-put-named-queries-in-jpa

Beaucoup de requêtes ne sont pas « naturellement » appartiennent à l'entité (et plus vous devez modifier le code de l'entité, si vous les mettez là, chaque fois que vous avez besoin d'une nouvelle requête).

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