Minden adat lekérése hibernált állapotú táblázatokból

1. Áttekintés

Ebben a gyors bemutatóban megvizsgáljuk, hogyan lehet minden adatot a hibernált állapotú táblázatokból megszerezni a JPQL vagy a Criteria API segítségével.

A JPQL gyorsabb és egyszerűbb megvalósítást biztosít számunkra, miközben a Criteria API használata dinamikusabb és robusztusabb.

2. JPQL

A JPQL egyszerű és egyértelmű módszert kínál az összes entitás lekérésére egy táblából.

Nézzük meg, milyen lehet az összes diák lekérése egy táblából a JPQL használatával:

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

A hibernált munkamenetünk createQuery () A metódus első argumentumként egy tipizált lekérdezési karakterláncot, másodikként az entitás típusát kapja meg. A lekérdezést a. Hívásával hajtjuk végre getResultList () módszer, amely az eredményeket gépeltként adja vissza Lista.

Az egyszerűség az előnye ennek a megközelítésnek. A JPQL nagyon közel áll az SQL-hez, ezért könnyebb írni és megérteni.

3. Criteria API

A Criteria API dinamikus megközelítést kínál a JPA-lekérdezések összeállításához.

Ez lehetővé teszi számunkra, hogy lekérdezéseket hozzunk létre a lekérdezési elemeket képviselő Java objektumok példányosításával. És tisztább megoldás, ha a lekérdezéseket számos választható mezőből állítják össze, mert ez kiküszöböli a sok karaktersorozat összefűzését.

Éppen egy választott lekérdezést láttunk JPQL használatával. Vizsgáljuk meg annak megfelelőjét a Criteria API segítségével:

public List findAllStudentsWithCriteriaQuery () {CriteriaBuilder cb = session.getCriteriaBuilder (); CriteriaQuery cq = cb.createQuery (Student.class); Root rootEntry = cq.from (Student.osztály); CriteriaQuery all = cq.select (rootEntry); TypedQuery allQuery = session.createQuery (all); return allQuery.getResultList (); } 

Először kapunk egy CriteriaBuilder amellyel gépeltet készítünk KritériumokLekérdezés. Később beállítottuk a lekérdezés gyökérbejegyzését. Végül pedig a-val hajtjuk végre getResultList () módszer.

Ez a megközelítés hasonló ahhoz, amit korábban tettünk. De teljes hozzáférést biztosít a Java nyelvhez, hogy nagyobb árnyalatokat fejtsünk ki a lekérdezés megfogalmazásában.

A JPQL lekérdezések és a JPA kritériumokon alapuló lekérdezések a hasonlóság mellett egyenértékű teljesítményt nyújtanak.

4. Következtetés

Ebben a cikkben bemutattuk, hogyan lehet az összes entitást megszerezni egy táblából a JPQL vagy a Criteria API használatával.

A példa teljes forráskódja elérhető a GitHub oldalon.


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