Das N 1-Abfrageproblem
Das Das N 1-Abfrageproblem tritt auf, wenn eine Abfrage N Datensätze abruft und nachfolgende Abfragen zum Abrufen verwandter Entitäten erforderlich sind, was zu N 1 führt Abfragen.
So lösen Sie das N 1-Problem im Ruhezustand
Um dieses Problem zu beheben, ist es wichtig, die ordnungsgemäße SQL-Protokollierung zu aktivieren, um das Problem zu erkennen.
Verwenden von JOIN FETCH
Die primäre Lösung ist die Verwendung von Hibernate JOIN FETCH, um die zugehörigen Entitäten in der ersten Abfrage eifrig zu laden. Dies kann erreicht werden, indem die Abfrage wie folgt geändert wird:
List<PostComment> comments = entityManager.createQuery( "select pc from PostComment pc join fetch pc.post p where pc.review = :review", PostComment.class) .setParameter("review", review) .getResultList();
Zusätzliche Überlegungen
Wenn mehrere untergeordnete Zuordnungen abgerufen werden müssen, sollten Sie zunächst eine Sammlung abrufen Abfrage und die zusätzlichen Sammlungen mit separaten Abfragen.
Automatische Erkennung mit JUnit
Integrationstests können eingesetzt werden, um das N 1-Abfrageproblem automatisch zu erkennen. Die Verwendung eines Frameworks wie db-util kann bei der Validierung der erwarteten Anzahl generierter SQL-Anweisungen hilfreich sein.
Das obige ist der detaillierte Inhalt vonWie löst man das N 1-Abfrageproblem in JPA und Hibernate?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!