Wie entscheiden Sie, in welchen Entitätsklassen JPA NamedQuery Anmerkungen zu setzen?
-
18-09-2019 - |
Frage
Sagen wir, ich habe einen Kunden - Customer one-to-many bidirektionale Beziehung mit dem Customer den Gesamtwert jeder Ordnung halten
.Wenn ich eine Abfrage habe den Gesamtwert aller Aufträge für einen bestimmten Kunden zu finden:
select SUM(o.orderValue) from CustomerOrder o where o.customer = :customer
Spielt es eine Rolle, in der Entity-Klasse diese kommentierten ist? Warum würden Sie es in der einen oder anderen setzen?
Lösung
Spielt es eine Rolle, in der Entity-Klasse diese kommentierten ist?
Aus technischer Sicht spielt es keine Rolle, wie Sie die name
eines @NamedQuery
verwenden wird es zu nennen.
Warum würden Sie ihn in der einen oder anderen?
Aber von einer „logischen“ Sicht der @NamedQuery
setzen, wo ist „natürlich“ gehört wird auf jeden Fall die Wartung erleichtern. In Ihrem Beispiel würde ich die Abfrage in der CustomerOrder
Einheit setzen, da die Abfrage ist über CustomerOrder
zu finden, das ist nur, wo würde ich es zu finden erwarten, wenn ich es suchen habe.
Andere Tipps
Es spielt keine Rolle.
Das allgemeine Prinzip ist es zu setzen, wo es logisch gehört. In Ihrem Fall - es ist besser in CustomerOrder
würde
Setzen Sie sie in den XML-Mapping-Dateien, die in der persistence.xml erklärt werden sollte. Sehen Sie diese große Link: arjan -tijms.omnifaces.org/2010/09/where-to-put-named-queries-in-jpa
Viele Anfragen nicht ‚natürlich‘ gehört mit dem Unternehmen (und weitere haben Sie den Entity-Code zu ändern, wenn Sie sie dort setzen, jedes Mal, wenn Sie brauchen eine neue Abfrage).