Obtener todos los datos de una tabla con Hibernate

1. Información general

En este tutorial rápido, veremos cómo obtener todos los datos de una tabla con Hibernate usando JPQL o Criteria API.

JPQL nos proporciona una implementación más rápida y sencilla mientras que el uso de Criteria API es más dinámico y robusto.

2. JPQL

JPQL proporciona una forma sencilla y directa de obtener todas las entidades de una tabla.

Veamos cómo se vería recuperar a todos los estudiantes de una tabla usando JPQL:

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

El método createQuery () de nuestra sesión de Hibernate recibe una cadena de consulta escrita como primer argumento y el tipo de entidad como segundo. Ejecutamos la consulta con una llamada al método getResultList () que devuelve los resultados como una Lista escrita .

La simplicidad es la ventaja de este enfoque. JPQL está muy cerca de SQL y, por lo tanto, es más fácil de escribir y comprender.

3. API de criterios

La API de criterios proporciona un enfoque dinámico para la creación de consultas JPA.

Nos permite crear consultas creando instancias de objetos Java que representan elementos de consulta. Y es una solución más limpia si las consultas se construyen a partir de muchos campos opcionales porque elimina muchas concatenaciones de cadenas.

Acabamos de ver una consulta para seleccionar todo usando JPQL. Echemos un vistazo a su equivalente usando la 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(); } 

Primero, obtenemos un CriteriaBuilder que usamos para crear una consulta de criterios escrita . Posteriormente, configuramos la entrada raíz para la consulta. Y por último, lo ejecutamos con un método getResultList () .

Ahora bien, este enfoque es similar al que hicimos antes. Pero, nos da acceso completo al lenguaje Java para articular mayores matices en la formulación de la consulta.

Además de ser similares, las consultas JPQL y las consultas basadas en criterios JPA tienen un rendimiento equivalente.

4. Conclusión

En este artículo, demostramos cómo obtener todas las entidades de una tabla usando JPQL o Criteria API.

El código fuente completo para el ejemplo está disponible en GitHub.