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.