0%
JPQL e Criteria API

JPQL

Consultar o modelo de objetos e saber quando a string deixa de ser suficiente.

15-20 min

JPQL e Criteria API

entityManager.find() atende a uma única necessidade: recuperar uma entidade cujo identificador se conhece. Todo o resto — buscar, filtrar, ordenar, agregar, fazer join — passa por uma consulta. A JPA oferece duas formas de escrevê-las, e a escolha entre elas não é uma questão de gosto.

JPQL é uma linguagem textual que se parece com SQL, mas não é SQL. A diferença é fundamental e cabe em uma única frase: JPQL consulta o modelo de objetos, não o schema. Você escreve select l from Livre l where l.auteur.nom = :nom, e é o Hibernate que decide que é preciso um join em auteur, com qual alias, em qual dialeto. Renomeie uma coluna no mapeamento e a consulta continua válida, porque nunca falou de colunas.

A contrapartida é que uma consulta JPQL é uma string: o compilador não a revisa. Um erro de digitação no nome de um atributo só aparece em tempo de execução — e, se a consulta for nomeada, na inicialização da aplicação, o que já é melhor. A Criteria API responde exatamente a esse problema, construindo a consulta por chamadas de método verificadas em tempo de compilação.

Comentários

Os comentários são alimentados pelo GitHub Discussions

Conecte-se com o GitHub para participar da discussão

Link copiado!