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.