API Criteria
La API Criteria es una API para crear consultas con objetos Java™, como una alternativa para crear series para las consultas JPQL (Java Persistence Query Language).
La API Criteria soporta la creación de consultas dinámicamente en tiempo de ejecución y también la capacidad de crear consultas de tipo seguro que el compilador puede verificar. El compilador no puede verificar la corrección de las consultas JPQL, que se debe comprobar en tiempo de ejecución durante la prueba.
La siguiente es una consulta JPQL de ejemplo que devuelve una lista de empleados con menos de cinco años
de servicio:
SELECT e FROM Employee e WHERE e.serviceyears < 5
El siguiente es un
ejemplo de la consulta Criteria equivalente:QueryBuilder qb = emf.getQueryBuilder();
CriteriaQuery q = qb.create(Employee.class);
Root e = q.from(Employee.class);
q.where(qb.lt(e.get(Employee_.serviceyears), 5));
TypedQuery tq = em.createQuery(q);
List result = q.getResultList();
Nota: Employee_ es el metamodelo de la clave Employee.
Dos características importantes son mejoras de JPQL:
- La API Criteria pueden expresar consultas que no se pueden expresar mediante JPQL. Para obtener información más detallada, consulte el apartado "Editable data store expressions" del artículo de developerWorks, consultas dinámicas de tipo seguro en JPA 2.0.
- Una CriteriaQuery se puede editar de forma programada. Para obtener más información consulte la sección "Consulta editable" del artículo de developerWorks: Consultas dinámicas seguras en JPA 2.0.