Heim > Java > javaLernprogramm > Wie löst man das N 1-Abfrageproblem in JPA und Hibernate?

Wie löst man das N 1-Abfrageproblem in JPA und Hibernate?

Susan Sarandon
Freigeben: 2024-11-11 12:23:03
Original
1036 Leute haben es durchsucht

How to Solve the N 1 Query Problem in JPA and Hibernate?

Was ist die Lösung für das N 1-Problem in JPA und Hibernate?

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();
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage