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 ?
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
kadu.m.lino
Depende… milissegundos é relevante pra vc? em alguns raros projetos são!
M
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)
R
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?
M
Marlon_Meneses
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
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.
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.
H
Hebert_Coelho
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
Marlon_Meneses
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.
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.
interessante…
eu sempre prefiro usar JPA pela produtividade
realmente é bem melhor
teve casos em que optei por usar SQL mesmo, mas foram raros
K
kadu.m.lino
[2]
como eu disse: “na minha opnião não vale o esforço!”
use ORM e seja feliz!
R
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.
H
Hebert_Coelho
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 *.