HQL e SQL, diferença.
11/01/2013
0
ele substitui o SQL?
Eduardo Pessoa
Post mais votado
24/01/2013
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.
Henrique Weissmann
Mais Posts
11/01/2013
Diogo Souza
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. :)
11/01/2013
Eduardo Pessoa
obrigado
11/01/2013
Diogo Souza
11/01/2013
Eduardo Pessoa
obrigado
14/01/2013
Alisson Santos
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
14/01/2013
Davi Costa
att Davi
14/01/2013
Danilo Gomes
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.
15/01/2013
Eduardo Pessoa
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
27/07/2013
José
Clique aqui para fazer login e interagir na Comunidade :)