JPQL vs SQL

14 respostas
R

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

14 Respostas

H

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.

R

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 ?

H

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 ?
Cara nunca vi nenhum livro falando nada disso.

É só converter uma String.

K

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…

K

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

M

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)

R

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)

Como assim? JPQL não é JPA?

M

Rodrigo Sasaki:
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)

Como assim? JPQL não é JPA?

nao…
to comparando SQL puro com JPA

H

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)
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.

H

Marlon Meneses:
nao…
to comparando SQL puro com JPA
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.

M

Hebert Coelho:
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)
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.

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

K

[2]

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

use ORM e seja feliz!

R

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.

H

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.
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 *.

Criado 28 de fevereiro de 2013
Ultima resposta 28 de fev. de 2013
Respostas 14
Participantes 5