Heim > Java > javaLernprogramm > Wie löst man das N1-Problem in JPA und Hibernate?

Wie löst man das N1-Problem in JPA und Hibernate?

Mary-Kate Olsen
Freigeben: 2024-11-14 18:54:02
Original
754 Leute haben es durchsucht

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

Bewältigung des N1-Problems in JPA und Hibernate

Das N1-Problem tritt auf, wenn übermäßig viele Abfragen ausgeführt werden, um relationale Daten abzurufen. Im Ruhezustand ruft beispielsweise eine erste Abfrage N Datensätze ab, und es sind N zusätzliche Abfragen erforderlich, um jeweils zugeordnete Datensätze abzurufen.

Um dieses Problem zu lösen, verwenden Sie JOIN FETCH:

List<PostComment> comments = entityManager.createQuery(
    "select pc from PostComment pc join fetch pc.post p where pc.review = :review"
)
.setParameter("review", review)
.getResultList();
Nach dem Login kopieren

Dieser JOIN FETCH ruft die Post-Zuordnung eifrig ab und eliminiert so die N 1 Abfragen.

Wenn mehrere untergeordnete Zuordnungen abgerufen werden müssen, rufen Sie eine Sammlung in der ersten Abfrage und die anderen bei nachfolgenden Abfragen ab.

Automatische Erkennung

Integrationstests sind ideal zur Erkennung des N 1-Problems. Das db-util-Projekt bietet eine automatische JUnit-Assertion, um die erwartete Anzahl der generierten SQL-Anweisungen zu validieren:

@Test
public void shouldNotHaveANPlusOneQuery() {
    // code to configure and execute db-util

    Assert.assertCountOfSqlStatementsPerformed(1);
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie löst man das N1-Problem 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