Ottieni tutti i dati da una tabella con Hibernate

1. Panoramica

In questo breve tutorial, vedremo come ottenere tutti i dati da una tabella con Hibernate utilizzando JPQL o l'API Criteria.

JPQL ci fornisce un'implementazione più rapida e semplice mentre l'utilizzo dell'API Criteria è più dinamico e robusto.

2. JPQL

JPQL fornisce un modo semplice e diretto per ottenere tutte le entità da una tabella.

Vediamo come potrebbe essere recuperare tutti gli studenti da una tabella utilizzando JPQL:

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

Il metodo createQuery () della nostra sessione Hibernate riceve una stringa di query digitata come primo argomento e il tipo dell'entità come secondo. Eseguiamo la query con una chiamata al metodo getResultList () che restituisce i risultati come un List digitato .

La semplicità è il vantaggio di questo approccio. JPQL è molto simile a SQL ed è quindi più facile da scrivere e da capire.

3. Criteri API

L'API Criteria fornisce un approccio dinamico per la creazione di query JPA.

Ci consente di creare query istanziando oggetti Java che rappresentano elementi di query. Ed è una soluzione più pulita se le query sono costruite da molti campi opzionali perché elimina molte concatenazioni di stringhe.

Abbiamo appena visto una query seleziona tutto utilizzando JPQL. Diamo un'occhiata al suo equivalente utilizzando l'API Criteria:

public List 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(all); return allQuery.getResultList(); } 

Innanzitutto, otteniamo un CriteriaBuilder che utilizziamo per creare una query di criteri digitata . Successivamente, impostiamo la voce di root per la query. Infine, lo eseguiamo con un metodo getResultList () .

Ora, questo approccio è simile a quello che abbiamo fatto in precedenza. Ma ci dà accesso completo al linguaggio Java per articolare una maggiore sfumatura nella formulazione della query.

Oltre ad essere simili, le query JPQL e le query basate su criteri JPA hanno prestazioni equivalenti.

4. Conclusione

In questo articolo, abbiamo dimostrato come ottenere tutte le entità da una tabella utilizzando JPQL o l'API dei criteri.

Il codice sorgente completo per l'esempio è disponibile su GitHub.