JPQL vs SQL

Bom dia Pessoal,

Ontem assisti a uma palestra que dizia que o quando se trabalha com JPA, o que influencia na performance de uma consulta é o Criteria, e que não há diferença significativa de performance entre escrever uma consulta JPQL ou SQL nativo.
Realmente não teria uma diferença entre o uso de JPQL ou SQL nativo ? Opta-se pelo uso conforme o gostou ou talvez pela praticidade da escrita somente ?
Eu sempre pensei que se precisamos de performance o negócio é optar pelo SQL nativo. Estou errado ?

Vlw

JPQL será traduzida em um SQL Nativo antes de chegar no banco de dados. Não haverá problema de performance.

A vantagem do JPQL é portável, SQL Nativo não.

Será que essa tradução do JPQL para o SQL Nativo não poderia vir a ser problema de performance ? Ou esse tempo de conversão seria irrelevante ?

[quote=rogeriosantos77]Será que essa tradução do JPQL para o SQL Nativo não poderia vir a ser problema de performance ? Ou esse tempo de conversão seria irrelevante ?[/quote]Cara nunca vi nenhum livro falando nada disso.

É só converter uma String.

aqui tem uma discussão boa a respeito

http://www.guj.com.br/java/252013-voce-nao-gosta-do-hibernate-eu-tb-nao-leia-para-entender-o-porque

sem dúvida JDBC puro feito corretamente é mais rápido… mas a diferença na grande maioria das vezes nem é percebível!

Na minha opnião, não vale o esforço usar JDBC! Considere usar uma ferramenta ORM

abrass…

Depende… milissegundos é relevante pra vc? em alguns raros projetos são!

também não vi nada comparando performace entre JPQL e SQL Nativo. Agora comparando SQL com JPA sim…
computacionalmente, SQL tem melhor performace que JPA (até onde sei)

[quote=Marlon Meneses]também não vi nada comparando performace entre JPQL e SQL Nativo. Agora comparando SQL com JPA sim…
computacionalmente, SQL tem melhor performace que JPA (até onde sei)[/quote]
Como assim? JPQL não é JPA?

[quote=Rodrigo Sasaki][quote=Marlon Meneses]também não vi nada comparando performace entre JPQL e SQL Nativo. Agora comparando SQL com JPA sim…
computacionalmente, SQL tem melhor performace que JPA (até onde sei)[/quote]
Como assim? JPQL não é JPA?[/quote]

nao…
to comparando SQL puro com JPA

[quote=Marlon Meneses]também não vi nada comparando performace entre JPQL e SQL Nativo. Agora comparando SQL com JPA sim…
computacionalmente, SQL tem melhor performace que JPA (até onde sei)[/quote]Tem sim pq entram vários fatores.

  1. O JPA tem cache (o que é configurável)
  2. O JPA valida relacionamentos e dados que chegaram com as classes, com JDBC você terá um object da vida
  3. O JPA converterá o resultado usando reflection, já com JDBC o desenvolvedor já vai chamar a classe diretamente e passar os valores: carro.setCor(resultset…)

Mas na boa? Na maioria das aplicações que trabalhei os fatores acima foram insignificantes.

[quote=Marlon Meneses]nao…
to comparando SQL puro com JPA[/quote]Não se refira a JPA e sim JPQL que é o que está sendo falado no tópico.

SQL e JPA não tem com comparar.

JDBC e JPA teria.

[quote=Hebert Coelho][quote=Marlon Meneses]também não vi nada comparando performace entre JPQL e SQL Nativo. Agora comparando SQL com JPA sim…
computacionalmente, SQL tem melhor performace que JPA (até onde sei)[/quote]Tem sim pq entram vários fatores.

  1. O JPA tem cache (o que é configurável)
  2. O JPA valida relacionamentos e dados que chegaram com as classes, com JDBC você terá um object da vida
  3. O JPA converterá o resultado usando reflection, já com JDBC o desenvolvedor já vai chamar a classe diretamente e passar os valores: carro.setCor(resultset…)

Mas na boa? Na maioria das aplicações que trabalhei os fatores acima foram insignificantes. [/quote]

interessante…
eu sempre prefiro usar JPA pela produtividade
realmente é bem melhor
teve casos em que optei por usar SQL mesmo, mas foram raros

[2]

como eu disse: “na minha opnião não vale o esforço!”

use ORM e seja feliz!

Realmente vendo alguns outros artigos realmente acho que não não é relevante a performance entre o JPQL e SQL Nativo. O que que percebo é que existem situações que fica mais fácil escrever em nativo ou não, mas dai a performance acaba por ser irrelevante mesmo.

[quote=rogeriosantos77]Realmente vendo alguns outros artigos realmente acho que não não é relevante a performance entre o JPQL e SQL Nativo. O que que percebo é que existem situações que fica mais fácil escrever em nativo ou não, mas dai a performance acaba por ser irrelevante mesmo.[/quote]O JPQL foi criado para deixar as consultas do JPA portável. Ele traduzirá para SQL nativo e executará a mesma. E ele ainda pode otimizar a query como escrever quais campos trazer ao invés de colocar *.