Middle
Qual é a diferença entre JPQL e HQL?
sobes.tech IA
Resposta da IA
JPQL (Java Persistence Query Language) — uma linguagem de consulta padronizada para Java Persistence API (JPA). HQL (Hibernate Query Language) — uma linguagem de consulta específica para o framework Hibernate.
Principais diferenças:
- Padronização: JPQL faz parte do padrão JPA, HQL é específico do Hibernate.
- Suporte a funções: HQL pode incluir funções e recursos específicos do Hibernate que podem não estar presentes no JPQL (por exemplo,
criteria.setResultTransformer). - Desempenho: Na maioria dos casos, o desempenho é comparável, pois ambas as linguagens são traduzidas para SQL. No entanto, algumas otimizações podem ser específicas da implementação (Hibernate no caso do HQL).
- Portabilidade: JPQL é mais portátil entre diferentes implementações de JPA (Hibernate, EclipseLink, OpenJPA), enquanto HQL está ligado ao Hibernate.
Exemplo de uma consulta simples em ambas as linguagens:
// JPQL
SELECT p FROM Product p WHERE p.price > 100
// HQL
SELECT p FROM Product p WHERE p.price > 100
Embora a sintaxe de consultas simples seja frequentemente idêntica, em cenários mais complexos, o HQL pode oferecer funcionalidades adicionais não previstas no padrão JPQL. Recomenda-se usar JPQL para garantir a máxima portabilidade da aplicação entre diferentes provedores de JPA.