Přeskočit na obsah
_CORE
AI & Agentic Systems Core Informační Systémy Cloud & Platform Engineering Data Platforma & Integrace Security & Compliance QA, Testing & Observability IoT, Automatizace & Robotika Mobile & Digital Banky & Finance Pojišťovnictví Veřejná správa Obrana & Bezpečnost Zdravotnictví Energetika & Utility Telco & Média Průmysl & Výroba Logistika & E-commerce Retail & Loyalty
Reference Technologie Blog Knowledge Base O nás Spolupráce Kariéra
Pojďme to probrat

JPA Criteria API — typove bezpecne dotazy

20. 08. 2013 1 min čtení CORE SYSTEMSai

JPQL dotazy jsou stringy — preklep v nazvu entity zjistite az za behu. Criteria API nabizi typove bezpecne dotazy, ktere compiler kontroluje pri kompilaci. Upoviddanejsi, ale bezpecnejsi.

Zaklady

CriteriaBuilder pro vytvareni dotazu. CriteriaQuery pro definici SELECT. Root pro FROM. Predicate pro WHERE podminky. TypedQuery pro vykonani.

Metamodel

JPA Metamodel generuje staticke tridy (Order_, Customer_) s atributy jako typed fieldy. Misto stringu “orderDate” pouzijete Order_.orderDate. Refaktoring entity automaticky odhali broken dotazy.

Dynamicke dotazy

Hlavni sila Criteria API: dynamicke skladani dotazu za behu. Vyhledavaci formular s 10 volitelnymi filtry — v JPQL byste skladali string. V Criteria API pridavate Predicate podminky programaticky.

JPQL vs. Criteria API

JPQL: citelnejsi pro jednoduche dotazy. Criteria API: bezpecnejsi pro slozite a dynamicke dotazy. Nase pravidlo: JPQL pro staticke dotazy (@NamedQuery), Criteria API pro dynamicke vyhledavani.

Doporuceni

Pouzivejte Metamodel — bez nej je Criteria API jen upovadanejsi JPQL bez vyhod. Generujte metamodel classy pres Maven plugin. Pro staticke dotazy zustadte u JPQL.

jpacriteria apihibernatejava