HQL e SQL, diferença.

11/01/2013

3

sempre ouvir falar sobre HQL, mas na verdade não sei pra que serve, por exemplo, em que momento devo utilizar,
ele substitui o SQL?
Responder

Post mais votado

24/01/2013

A história é a seguinte.

O HQL é a linguagem de pesquisa do Hibernate para buscar informações no banco de dados usando a metáfora dos objetos ao invés das tabelas diretamente. A idéia é simples: você escreve suas consultas usando os atributos e objetos que foram mapeados pela sua ferramenta de mapeamento objeto relacional (no caso, o Hibernate).

O HQL é muito inspirado em uma outra lingaugem chamada OQL, que foi uma tentativa de se padronizar este tipo de consulta.

Já o SQL (JDBC), você vai usar quando quiser interagir diretamente com as tabelas do seu banco de dados. Neste caso, você vai usar o SQL nativo mesmo. Sob o ponto de vista de performance, o HQL sempre vai ter um overhead: porque a consulta em cima dos objetos vai ser em seguida transformada em uma consulta SQL. Em um primeiro momento, parece que é muito mais lento, mas na maior parte das vezes, o que acontece é que fica mais rápido, porque são feitas otimizações no SQL gerado pelo HQL, otimizações estas que muitas vezes o desenvolvedor se esquece de fazer.

No entanto, há um custo aí. Há momentos em que você precisa de uma otimização ou outra que o HQL não vai saber gerar pra você. Ou mesmo o uso de recursos específicos do seu banco de dados que o HQL não vai acessar também e que podem te dar um ganho de performance monstro OU facilitar o seu desenvolvimento. Neste caso, claro, você vai ter perda de portabilidade, mas é aquela questão de saber dosar o uso de uma ou outra tecnologia.

Esta é a vantagem do JDBC sobre o HQL: você vai estar mais próximo das tabelas e consumindo menos recursos. É possível executar consultas nativas com o Hibernate? Sim: mas neste caso, se você não estiver usando uma sessão stateless, na realidade via ter código mais lento e que consome menos memória, porque estará, ao executar suas consultas, atualizando os dados da sessão corrente que seu código estiver usando.
Responder

Mais Posts

11/01/2013

Diogo Souza

O [url="http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/queryhql.html"]HQL (Hibernate Query Language)[/url], é a linguagem usada pelo Hibernate para substituir o SQL puro.

Serve basicamente para fazer queries com os mesmos conceitos do SQL (insert's, cláusula where, joins..), porém em uma linguagem que usa diretamente as entidades mapeadas ao invés das tabelas. :)
Responder

11/01/2013

Eduardo Pessoa

existe alguma "contra indicação"??? ou pode-se utilizar sem problemas???

obrigado
Responder

11/01/2013

Diogo Souza

Contra indicação com o HQL não, a menos que você esteja usando JDBC somente, aí nem poderá usar o HQL. Apenas evite queries nativas, elas burlam um pouco o conceito de multibanco do Hibernate! :)
Responder

11/01/2013

Eduardo Pessoa

blz, tem algum tutorial bem simples e em portugues para me ajudar a esclarecer as ideias???

obrigado
Responder

13/01/2013

Eduardo Pessoa

tem???
Responder

14/01/2013

Alisson Santos

Na web se encontra muito disso.
mais vou deixar dois links

http://www.tutorialspoint.com/hibernate/hibernate_query_language.htm
http://javafree.uol.com.br/topic-4348-%C3%93timo-tutorial-de-HQL-Hibernator-Query-Language.html
Responder

14/01/2013

Davi Costa

aki na própria devmedia tem diversos.. é ó usar as palavras-chave nas pesquisas

att Davi
Responder

14/01/2013

Danilo Gomes

Cara, a única contra indicação também torna-se uma vantagem:

O HQL será traduzido em SQL em algum momento pra linguagem nativa da base que estiver usando.
Isso é "menos performático". Mas não é um problema, a perda é desprezível.

A vantagem é a portabilidade, pois ficará mais fácil migrar de uma base para outra com HQL.
Responder

15/01/2013

Eduardo Pessoa

Na web se encontra muito disso.
mais vou deixar dois links

http://www.tutorialspoint.com/hibernate/hibernate_query_language.htm
http://javafree.uol.com.br/topic-4348-%C3%93timo-tutorial-de-HQL-Hibernator-Query-Language.html


ok Alisson, obrigado
Responder

15/01/2013

Eduardo Pessoa

obrigado pelas infos.

Davi, Grupo Midas
Responder

27/07/2013

José

Como a dúvida aparentemente foi sanada, estou dando o tópico por concluído.
Responder