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.
- O JPA tem cache (o que é configurável)
- O JPA valida relacionamentos e dados que chegaram com as classes, com JDBC você terá um object da vida
- 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.
- O JPA tem cache (o que é configurável)
- O JPA valida relacionamentos e dados que chegaram com as classes, com JDBC você terá um object da vida
- 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 *.