Haal alle gegevens uit een tabel met Hibernate

1. Overzicht

In deze korte handleiding bekijken we hoe u alle gegevens uit een tabel kunt halen met Hibernate met behulp van JPQL of de Criteria API.

JPQL biedt ons een snellere en eenvoudigere implementatie, terwijl het gebruik van de Criteria API dynamischer en robuuster is.

2. JPQL

JPQL biedt een eenvoudige en ongecompliceerde manier om alle entiteiten uit een tabel te halen.

Laten we eens kijken hoe het eruit zou kunnen zien om alle leerlingen uit een tabel te halen met JPQL:

openbare lijst findAllStudentsWithJpql () {return session.createQuery ("SELECTEER een UIT Student a", Student.class) .getResultList (); } 

Onze Hibernate-sessie createQuery () methode ontvangt een getypte queryreeks als het eerste argument en het type van de entiteit als het tweede. We voeren de zoekopdracht uit met een oproep naar het getResultList () methode die de resultaten retourneert als een getypt Lijst.

Eenvoud is het voordeel van deze aanpak. JPQL lijkt erg op SQL en is daarom gemakkelijker te schrijven en te begrijpen.

3. Criteria API

De Criteria API biedt een dynamische benadering voor het bouwen van JPA-queries.

Het stelt ons in staat om query's te maken door Java-objecten te instantiëren die query-elementen vertegenwoordigen. En het is een schonere oplossing als query's zijn opgebouwd uit veel optionele velden, omdat het veel aaneenschakeling van tekenreeksen elimineert.

We hebben zojuist een alles-selecteren-query gezien met JPQL. Laten we het equivalent ervan eens bekijken met behulp van de Criteria API:

openbare lijst 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 (alles); retourneer allQuery.getResultList (); } 

Ten eerste krijgen we een CriteriaBuilder die we gebruiken om een ​​getypt CriteriaVraag. Later stellen we het root-item voor de query in. En als laatste voeren we het uit met een getResultList () methode.

Nu is deze benadering vergelijkbaar met wat we eerder deden. Maar het geeft ons volledige toegang tot de Java-taal om meer nuances te formuleren bij het formuleren van de vraag.

Behalve dat ze vergelijkbaar zijn, zijn JPQL-query's en op JPA-criteria gebaseerde query's even goed presterend.

4. Conclusie

In dit artikel hebben we laten zien hoe u alle entiteiten uit een tabel kunt halen met behulp van JPQL of Criteria API.

De volledige broncode voor het voorbeeld is beschikbaar op GitHub.