Dohvatite sve podatke iz tablice s hibernacijom

1. Pregled

U ovom ćemo brzom vodiču pogledati kako dobiti sve podatke iz tablice s hibernacijom koristeći JPQL ili Criteria API.

JPQL nam pruža bržu i jednostavniju implementaciju dok je korištenje Criteria API dinamičnije i robusnije.

2. JPQL

JPQL pruža jednostavan i izravan način za dobivanje svih entiteta iz tablice.

Pogledajmo kako bi moglo izgledati dohvaćanje svih učenika iz tablice pomoću JPQL-a:

javni popis findAllStudentsWithJpql () {povratak sesije.createQuery ("ODABERITE IZ učenika a", Student.class) .getResultList (); } 

Naša sesija hibernacije createQuery () metoda prima tipizirani niz upita kao prvi argument, a tip entiteta kao drugi. Upit izvršavamo pozivom na getResultList () metoda koja vraća rezultate kao otkucane Popis.

Jednostavnost je prednost ovog pristupa. JPQL je vrlo blizak SQL-u te ga je stoga lakše pisati i razumjeti.

3. API kriterija

API kriterija pruža dinamičan pristup za izgradnju JPA upita.

Omogućuje nam izradu upita instanciranjem Java objekata koji predstavljaju elemente upita. A čistije je rješenje ako se upiti grade iz mnogih neobaveznih polja jer uklanja puno spajanja nizova.

Upravo smo vidjeli upit za odabir svih koristeći JPQL. Pogledajmo njegov ekvivalent koristeći Criteria API:

javni popis 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 (sve); vrati allQuery.getResultList (); } 

Prvo, dobivamo a CriteriaBuilder koje koristimo za stvaranje tipkanog KriterijiUpit. Kasnije smo postavili osnovni unos za upit. I na kraju, izvršavamo ga s getResultList () metoda.

Sada je ovaj pristup sličan onome što smo radili ranije. Ali, daje nam potpun pristup jeziku Java kako bismo artikulirali veće nijanse u formuliranju upita.

Osim što su slični, JPQL upiti i upiti temeljeni na JPA kriterijima jednako su učinkoviti.

4. Zaključak

U ovom smo članku pokazali kako dobiti sve entitete iz tablice pomoću JPQL ili Criteria API.

Kompletni izvorni kod za primjer dostupan je na GitHubu.