Melhor Desempenho Hibernate,JPA ou JDBC?

Pessoal,
procurei aqui no fórum mas não encontrei…

Gostaria de saber qual estratégia de persistencia tem melhor desempenho?

Hibernate+JPA? só um ou outro? ou só JDBC?

vlw…

1 curtida

Usar o jdbc você ganhará um pouco de desempenho ai iniciar a aplicação. Enquanto usando algum framework de persistência.
No entanto realizar as persistência entre banco e objeto é mais rápido utilizando esses frameworks. Cabe a você analisa quando é ou não vantagem usar um framework de persistência.

Opa.

Sim, JDBC é mais rápido. Só que a diferença de performance não é tão gritante. Ainda mais se você comparar o tempo de desenvolvimento que leva usando JDBC com o tempo que leva usando Hibernate. Você pode ainda fazer algumas otimizações quando usa Hibernate que os tempos de consulta podem nem ficar perceptíveis.

Legal…

é que o volume de trafego vai ser grande…

fiz…testes…usando JDBC… e as consultas estão levando em média 50 ms

Como não sei se isso é rápido, não to convencido de usar JDBC.

essa média é boa? na verdade o que eu devo analisar para saber se isso é rápido?

flw pessoal…

[quote=rafaelpiton]Legal…

é que o volume de trafego vai ser grande…

fiz…testes…usando JDBC… e as consultas estão levando em média 50 ms

Como não sei se isso é rápido, não to convencido de usar JDBC.

essa média é boa? na verdade o que eu devo analisar para saber se isso é rápido?

flw pessoal…[/quote]
isso depende muito da quantidade de registro que você está processando. E da sua necessidade.
A depender da aplicação isso pode ser muiiito tempo.

então… ja cheguei a ler que usando jdbc você tem um pouco a mais de desempenho que usando algum framework ORM (pouca coisa), mais isso não considera outras coisas como cache de segundo nível por exemplo que vocÊ “pode” usar com o framework ORM que não estou dizendo que não exista algo relativo a isso no jdbc, mas eu nunca vi alguém usando… me parece que se você souber usar esse tipo de ferramenta bem seu ambiente não perde em nada usando o framework (e o tempo de desenvolvimento melhora muito).

ja cheguei a ler que o toplink era um pouquinho mais rápido que o hibernate também… aqui no guj

Ótimo…

realmente levei mais tempo com JDBC do que com ORM.

No entanto, fiz com JDBC porque não conhecia hibernate somente JPA. Mas depois pesquisei e vi que se souber JPA sabe hibernate, isso é real? ou to por fora do assunto…

vlw…

O Hibernate é uma das implementações da JPA. Assim como TopLink e EclipseLink. A diferença é que o Hibernate coloca mais coisas (a parte de Criteria dele é melhor, por exemplo).

Pra medir a velocidade de consultas, use um profiler. Ou, ainda mais fácil, faça o SQL pela linha de comando e veja se você consegue visualizar o tempo de consulta. Aí é só comparar com o do Java.

[quote=rafaelpiton]Ótimo…

realmente levei mais tempo com JDBC do que com ORM.

No entanto, fiz com JDBC porque não conhecia hibernate somente JPA. Mas depois pesquisei e vi que se souber JPA sabe hibernate, isso é real? ou to por fora do assunto…

vlw…[/quote]
O jpa funciona como uma ponte que deve ser implementa por outros frameworks de persistência.
Por isso que você usar o jpa com algum outro framework, por exemplo, jpa+hibernate ou jpa+toplink.
No entanto você pode estar usando esses frameworks de modo puro ou seja sem estar usando o jpa, que em alguns casos acabam tendo mais recursos quando são usados dentro do jpa.

Então se eu usar a sintaxe do JPA usando hibernate irá funcionar?

Eu diria que 90% da sintaxe, sim.

Lembrando que ao se usar o hibernate “puro” você tem alguns recursos e facilidades específicos desse framework em comparação quando se usa o jpa.

Eu diria que depende. Por que depende? Se a sua aplicação for acessada APENAS por hibernate, o hibernate tem melhor performance. Não em relação a uma query e sim no sistema como um todo. Porque você ativa o cache dele e ele controla todo o tráfego no banco. Por exemplo, o Usuário 1 faz uma consulta buscando os dados do Cliente 1, logo depois o Usuário 2 faz a mesma consulta, o hibernate entende que são os mesmos dados e como tem as informações no seu cache, devolve para o Usuário 2 as mesmas informações SEM a necessidade de ir até o banco. Mas isso só funciona se o hibernate, controlar TODAS as transações do banco, se tiver triggers ou outra aplicações usando, e você ativar o cache dele, sua consistência vai pro saco. Digamos que no exemplo acima, logo depois do Usuário 1 fazer a consulta, alguém alterou os dados do Cliente 1 se esse alguém alterou através do hibernate, o hibernate verifica a mudança e anula o cache. Caso a mudança tenha sido feita através de triggers ou outro programa, o hibernate não tem como saber que aqueles dados foram alterados e logo não apaga o cache. E quando o Usuário 2 receber as informações, elas virão inconsistentes.

Portanto esse cache deve ser ativado com muito cuidado. Se por algum motivo, ele não puder ser ativado, ai o JDBC é mais performático mesmo.