API de Critérios
A API de critérios é uma API para construir consultas com objetos Java™, como uma alternativa para criar cadeias para as consultas Java Persistence Query Language (JPQL).
A API Critérios suporta a construção de consultas dinamicamente no tempo de execução e também a possibilidade de construir consultas de tipo seguro que podem ser verificadas pelo compilador. A correção das consultas JPQL não pode ser verificada pelo compilador e deve ser verificada no tempo de execução durante o teste.
A seguir há uma amostra de consulta JPQL que retorna uma lista de funcionários
com menos de cinco anos de serviço:
SELECT e FROM Employee e WHERE e.serviceyears < 5
A seguir há uma amostra da consulta de Critérios 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_ é o
Metamodelo da classe Employee.
Dois importantes recursos são melhorias a partir do JPQL:
- A API de Critérios pode expressar consultas que não são possíveis por meio de JPQL. Para obter mais informações detalhadas, consulte a seção "Expressões de armazenamento de dados editáveis", no artigo developerWorks, Dinâmico, consultas de tipo seguro em JPA 2.0.
- Um CriteriaQuery pode ser editado programaticamente. Para obter mais informações, consulte a seleção "Consulta editável", no artigo developerWorks, Dinâmico, consultas de tipo seguro em JPA 2.0.