Získajte všetky údaje z tabuľky pomocou režimu dlhodobého spánku

1. Prehľad

V tomto rýchlom výučbe sa pozrieme na to, ako získať všetky údaje z tabuľky v režime dlhodobého spánku pomocou protokolu JPQL alebo rozhrania Criteria API.

JPQL nám poskytuje rýchlejšiu a jednoduchšiu implementáciu, zatiaľ čo použitie rozhrania Criteria API je dynamickejšie a robustnejšie.

2. JPQL

JPQL poskytuje jednoduchý a priamy spôsob, ako získať všetky entity z tabuľky.

Pozrime sa, ako by to mohlo vyzerať, ak by sme všetkých študentov načítali z tabuľky pomocou JPQL:

public List findAllStudentsWithJpql () {return session.createQuery ("SELECT a FROM Student a", Student.class) .getResultList (); } 

Naše hibernácie createQuery () metóda prijme zadaný reťazec dotazu ako prvý argument a typ entity ako druhý. Dotaz vykonáme volaním do getResultList () metóda, ktorá vráti výsledky ako zadané Zoznam.

Výhodou tohto prístupu je jednoduchosť. JPQL je veľmi blízko k SQL, a preto je ľahšie napísať a porozumieť mu.

3. Kritériá API

Criteria API poskytuje dynamický prístup k vytváraniu dotazov JPA.

Umožňuje nám to vytvárať dotazy vytváraním inštancií objektov Java, ktoré predstavujú prvky dotazu. A je to čistejšie riešenie, ak sú dotazy zostavované z mnohých voliteľných polí, pretože eliminuje množstvo reťazových reťazcov.

Práve sme videli výberový dotaz pomocou JPQL. Pozrime sa na jeho ekvivalent pomocou rozhrania Criteria API:

verejný zoznam findAllStudentsWithCriteriaQuery () {CriteriaBuilder cb = session.getCriteriaBuilder (); CriteriaQuery cq = cb.createQuery (Student.class); Root rootEntry = cq.from (Student.class); CriteriaQuery all = cq.select (rootEntry); TypedQuery allQuery = session.createQuery (všetko); return allQuery.getResultList (); } 

Najskôr dostaneme a CriteriaBuilder ktoré používame na vytvorenie napísaného KritériáDopyt. Neskôr sme nastavili koreňový záznam pre dopyt. A nakoniec to vykonáme pomocou a getResultList () metóda.

Teraz je tento prístup podobný tomu, ktorý sme robili predtým. Poskytuje nám však úplný prístup k jazyku Java, aby sme pri formulácii dotazu vyjadrili väčšie nuansy.

Okrem toho, že sú podobné, dotazy JPQL a dotazy založené na kritériách JPA sú rovnako výkonné.

4. Záver

V tomto článku sme si ukázali, ako získať všetky entity z tabuľky pomocou rozhrania JPQL alebo Criteria API.

Celý zdrojový kód tohto príkladu je k dispozícii na GitHub.


$config[zx-auto] not found$config[zx-overlay] not found