JPQL dotazy jsou stringy — preklep v názvů entity zjistíte az za behu. Criteria API nabízí typove bezpecne dotazy, které compiler kontroluje pri kompilaci. Upoviddanejsi, ale bezpecnejsi.
Zaklady¶
CriteriaBuilder pro vytváření dotazu. CriteriaQuery pro definici SELECT. Root pro FROM. Predicate pro WHERE podmínky. TypedQuery pro vykonání.
Metamodel¶
JPA Metamodel generuje staticke třídy (Order_, Customer_) s atributy jako typed fieldy. Misto stringu “orderDate” použijete Order_.orderDate. Refaktoring entity automaticky odhalí broken dotazy.
Dynamické dotazy¶
Hlavní sila Criteria API: dynamické skládání dotazu za behu. Vyhledávací formulář s 10 volitelnymi filtry — v JPQL byste skladali string. V Criteria API přidáváte Predicate podmínky programaticky.
JPQL vs. Criteria API¶
JPQL: čitelnější pro jednoduché dotazy. Criteria API: bezpecnejsi pro slozite a dynamické dotazy. Naše pravidlo: JPQL pro staticke dotazy (@NamedQuery), Criteria API pro dynamické vyhledávání.
Doporuceni¶
Používejte Metamodel — bez něj je Criteria API jen upovadanejsi JPQL bez výhod. Generujte metamodel classy pres Maven plugin. Pro staticke dotazy zustadte u JPQL.
Potřebujete pomoc s implementací?
Naši experti vám pomohou s návrhem, implementací i provozem. Od architektury po produkci.
Kontaktujte nás