Zum Inhalt springen
_CORE
KI & Agentensysteme Unternehmensinformationssysteme Cloud & Platform Engineering Datenplattform & Integration Sicherheit & Compliance QA, Testing & Observability IoT, Automatisierung & Robotik Mobile & Digitale Produkte Banken & Finanzen Versicherungen Öffentliche Verwaltung Verteidigung & Sicherheit Gesundheitswesen Energie & Versorgung Telko & Medien Industrie & Fertigung Logistik & E-Commerce Retail & Treueprogramme
Referenzen Technologien Blog Know-how Tools
Über uns Zusammenarbeit Karriere
CS EN DE
Lassen Sie uns sprechen

Hibernate Performance — Das N+1-Problem und wie man es löst

11. 09. 2012 1 Min. Lesezeit CORE SYSTEMSai
Hibernate Performance — Das N+1-Problem und wie man es löst

Hibernate ist ein großartiges ORM — bis man sich die SQL-Logs ansieht. 100 Bestellungen = 101 SQL-Abfragen. Das ist das N+1-Problem und die häufigste Ursache für langsame JPA-Anwendungen.

LazyInitializationException

Hibernate lädt Assoziationen standardmäßig lazy. Drei Lösungen: Open Session in View (einfach, verletzt aber die Schichtentrennung), DTO-Pattern (unsere Präferenz), expliziter Fetch.

JOIN FETCH

JPQL mit JOIN FETCH lädt die Assoziation in einer einzigen SQL-Abfrage. Ideal für eine einzelne Entity. Bei Listen Vorsicht vor dem kartesischen Produkt.

@BatchSize

@BatchSize(size=20) lädt Lazy Collections in Stapeln von 20 statt einzeln. 100 Bestellungen = 5 SQL-Abfragen statt 100.

Second Level Cache

Ehcache für Read-mostly-Daten. Query Cache für wiederkehrende Abfragen. Vorsicht bei der Cache-Invalidierung.

Regeln

  1. SQL im Development loggen. 2. JOIN FETCH für einzelne Entities verwenden. 3. @BatchSize für Listen verwenden. 4. Das DTO-Pattern anwenden. 5. Read-mostly-Daten cachen.
hibernatejpaormperformance
Teilen:

CORE SYSTEMS

Wir bauen Kernsysteme und KI-Agenten, die den Betrieb am Laufen halten. 15 Jahre Erfahrung mit Enterprise-IT.

Brauchen Sie Hilfe bei der Implementierung?

Unsere Experten helfen Ihnen bei Design, Implementierung und Betrieb. Von der Architektur bis zur Produktion.

Kontaktieren Sie uns