Přeskočit na obsah
_CORE
AI & agentní systémy Podnikové informační systémy Cloud & Platform Engineering Datová platforma & integrace Bezpečnost & compliance QA, testování & observabilita IoT, automatizace & robotika Mobilní & digitální produkty Bankovnictví & finance Pojišťovnictví Veřejná správa Obrana & bezpečnost Zdravotnictví Energetika & utility Telco & média Průmysl & výroba Logistika & e-commerce Retail & věrnostní programy
Reference Technologie Blog Know-how Nástroje
O nás Spolupráce Kariéra
CS EN DE
Pojďme to probrat

Hibernate performance — N+1 problém a jak ho řešit

11. 09. 2012 Aktualizováno: 24. 03. 2026 1 min čtení CORE SYSTEMSai
Tento článek byl publikován v roce 2012. Některé informace mohou být zastaralé.
Hibernate performance — N+1 problém a jak ho řešit

Hibernate je skvělý ORM — dokud se nepodivate na SQL logy. 100 objednávek = 101 SQL dotazu. To je N+1 problem a nejčastější příčina pomalých JPA aplikaci.

LazyInitializationException

Hibernate defaultně načítá asociace lazy. Tri řešení: Open Session in View (jednoduché, ale porušuje odddeleni vrstev), DTO pattern (naše preference), explicitní fetch.

JOIN FETCH

JPQL s JOIN FETCH načte asociaci v jednom SQL dotazu. Pro single entity ideální. Pro seznamy pozor na kartezsky součin.

@BatchSize

@BatchSize(size=20) načítá lazy kolekce v dávkách po 20 misto po jednom. 100 objednávek = 5 SQL misto 100.

Second Level Cache

Ehcache pro read-mostly data. Query cache pro opakující se dotazy. Pozor na invalidaci.

Pravidla

  1. Logujte SQL na dev. 2. JOIN FETCH pro single entity. 3. @BatchSize pro seznamy. 4. DTO pattern. 5. Cache pro read-mostly data.
hibernatejpaormperformance
Sdílet:

CORE SYSTEMS

Stavíme core systémy a AI agenty, které drží provoz. 15 let zkušeností s enterprise IT.

Potřebujete pomoc s implementací?

Naši experti vám pomohou s návrhem, implementací i provozem. Od architektury po produkci.

Kontaktujte nás
Potřebujete pomoc s implementací? Domluvit schůzku