Avanzadas

5.6.2. Avanzadas#

Las operaciones CRUD vistas hasta ahora son muy básicas y no cubren con seguridad todas las necesidades que se nos presenten en la aplicación (p.e. obtener la lista completa de objetos de un mismo tipo). Para operaciones más avanzadas (especialmente de lectura), JPA ofrece tres alternativas:

JPQL, esto es, Lenguaje de consultas de Persistencia de Java

Las consultas se realizan construyendo sentencias (esto es, cadenas) inspiradas en el lenguaje SQL. Es relativamente sencillo de aprender para programadores familiarizados con SQL.

Criteria API

Se basa en el uso de clases y métodos que van construyendo la consulta. Es más complicado de aprender, pero mucho más versátil para construir consultas dinámicas durante la ejecución del programa. Si, además, su utiliza el Metamodel el IDE podrá analizar estáticamente los errores de digitalización o de tipos, cosa que es imposible si utilizamos JPQL.

Consultas nativas en SQL

Deberían ser el último recurso, ya que provocan que la aplicación dependa de las particularidades del SGBD, lo que desbarata una de las ventajas del uso de una herramienta ORM.

Analizaremos cómo realizar las tres.