Lenguajes de consulta JPA

JPA permite consultar las entidades empleando los siguientes mecanismos:

  • JPQL (JPA QL)
  • SQL
  • Criteria API

En las siguientes secciones se demuestran las mismas consultas empleando los tres mecanismos de consulta y se incluyen al final del artículo referencias que le permitirán profundizar en los detalles de estos lenguajes.

JPQL (JPA QL)

Este lenguaje de consulta, similar a SQL, permite realizar búsquedas de manera independiente al esquema de la BD relacional; es decir, las consultas se realizan sobre el modelo de datos (las propiedades y relaciones) definido por las entidades.

sintaxis_jpql

En el siguiente vídeo se demuestran las capacidades de este lenguaje.

SQL

Aunque JPA abre la posibilidad de consultar datos empleados consultas SQL, se recomienda evitar esta estrategia lo más que se pueda y emplearla sólo cuando sea absolutamente necesaria; por ejemplo, para mejorar el desempeño o cuando cierto requerimiento demanda funcionalidad específica del sistema gestor de base de datos, ya que con este mecanismo se consulta sobre las tablas de la base de datos. Emplear características exclusivas de un producto crea dependencias entre la aplicación y el sistema gestor de base de datos, algo que justamente se trata de evitar cuando se emplea JPQL en lugar de SQL. En el siguiente vídeo se demuestran el uso de este enfoque de consulta en JPA:

Criteria API

El Criteria API de JPA permite definir consultas empleando interfaces y objetos en lugar de texto. En el siguiente vídeo se demuestran el uso de este enfoque para la creación de consultas de entidades JPA:

Las siguientes imágenes resumen algunas de las equivalencias entre JPQL y Criteria API

Cláusulas

clausulas_jpql_criteria

Operadores

operadores_jpql_criteria

Funciones de Agregación

funciones_agregacion_jpql_criteria

Funciones JPQL

funciones_jpql_criteria

Referencias

[1] Pro JPA 2, Second Edition

[2] JPA Criteria API Queries

[3] Creación de consultas dinámicas en JPA sin SQL (ni JPQL)

Leave a Reply