OneToOne-Beziehung mit gemeinsamem Primärschlüssel generiert n + 1 Auswahlen; Irgendeine Problemumgehung?

Stellen Sie sich 2 Tabellen in einer relationalen Datenbank vor, z. Person und Abrechnung. Zwischen diesen Entitäten ist eine (nicht obligatorische) OneToOne-Zuordnung definiert, und sie teilen sich den Personenprimärschlüssel (d. H. PERSON_ID ist sowohl in Person als auch in Abrechnung definiert und in letzterer ein Fremdschlüssel).

Wenn Sie über eine benannte Abfrage eine Person auswählen, z. B .:

<code>from Person p where p.id = :id
</code>

Hibernate / JPA generiert zwei ausgewählte Abfragen, eine in der Personentabelle und eine in der Abrechnungstabelle.

Das obige Beispiel ist sehr einfach und würde keine Leistungsprobleme verursachen, da die Abfrage nur ein Ergebnis zurückgibt. Stellen Sie sich das vorPerson hatn OneToOne-Beziehungen (alle nicht obligatorisch) zu anderen Entitäten (alle gemeinsam mit demPerson Primärschlüssel).

Korrigieren Sie mich, wenn ich falsch liege, aber aselect Rückfrage nach Person, Rückkehrr Zeilen, würde ergeben(n+1)*r wählt aus, dass von Hibernate generiert wird, auch wenn die Assoziationen bestehenfaul.

Gibt es eine Problemumgehung für diese potenzielle Leistungsstörung (abgesehen davon, dass überhaupt kein gemeinsamer Primärschlüssel verwendet wird)? Vielen Dank für alle Ihre Ideen.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage