Qual é o framework de mapeamento objeto/relacional que oferece o melhor desempenho?  XML
Índice dos Fóruns » Arquitetura de Sistemas
Autor Mensagem
fsmachadorj
Smalltalk
[Avatar]

Membro desde: 17/01/2005 16:11:29
Mensagens: 2
Offline

Estou desenvolvendo uma aplicação em que a velocidade de uma consulta no banco é um requisito muito relevante. O banco de dados que eu irei utilizar é o MySQL, pois já possui um excelente desempenho.

Alguém sabe me dizer qual é o framework de mapeamento objeto/relacional que oferece o melhor desempenho para consultas no banco? Hibernate? iBatis? Outro?

Grato,

Fernando Machado.
[Email] [MSN] [ICQ]
Rafael Nunes
Moderador
[Avatar]

Membro desde: 09/10/2003 13:41:06
Mensagens: 2890
Localização: sao bernardo do campo
Offline

O único framework que utilizei para isto foi o Hibernate, e fiz uma comparação com o Entity Beans. Como esperava, não houve comparação, o Hibernate foi bem mais performático.
Sugiro que para sanar melhor tua dúvida, faz o teste por você mesmo com os possíveis e veja o que melhor lhe atende.

------------------------------------------------------------------
"Think different? I'd be happy if most people would just think..."

http://www.yaw.com.br
http://twitter.com/rafanunes
http://twitter.com/youandwe
[Email]
Mauricio Linhares
Moderador
[Avatar]

Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline

Eu uso muito o Hibernate, mas até mesmo pela arquitetura, o iBatis é muito mais rápido, principalmente se você for usar muito stored procedures. O Hibernate ainda está dando os primeiros passos em direção a isso.

Mas vendo por outro lado, se você mantiver o cache bem configurado e a sua aplicação tiver mais selects do que inserts e updates (e especialmente se ela não usar updates e inserts em massa) o Hibernate pode tem uma performance igual ao iBatis.

Como eu tenho horror a programação procedural em bancos de dados e gosto de manter a lógica de negócio da aplicação na aplicação, prefiro o Hibernate. É só uma questão de gosto mesmo

Mas nada nunca vai bater JDBC puro

Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr

Screencast de Introdução a linguagem Objective-C
[WWW]
jprogrammer
Virtual Machine Man
[Avatar]
Membro desde: 04/02/2005 13:49:20
Mensagens: 546
Offline

Já que o JDBC puro é legal porque vc não usa esses geradores de códigos que geram o DAO para vc a partir de uma tabela ?

http://www.codefutures.com/products/firestorm/editions/matrix.html

This message was edited 2 times. Last update was at 24/05/2005 13:20:48


O bom menino !!!
louds
Moderador
[Avatar]

Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline

jprogrammer wrote:Já que o JDBC puro é legal


JDBC já era, muito overhead e uma API complexa demais... atoa! Atualmente eu estou usando essa solução muito mais simples, quee me da uma liberdade muito maior na hora de desenvolver e sem perder com produtividade! Conheça ela:

API para comunicação com RDBMS

This message was edited 2 times. Last update was at 24/05/2005 13:36:40


http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda
[ICQ]
jprogrammer
Virtual Machine Man
[Avatar]
Membro desde: 04/02/2005 13:49:20
Mensagens: 546
Offline

Caramba vc usa sockets direto.
Mas vc deve conhecer o "protocolo" OBDC e de cada banco.
Deve ficar bem mais rápido mas não dá trabalho ?

Mas o hibernate não usaria JDBC ?

O bom menino !!!
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

Bom, se você tem de ficar amarrado ao Oracle e seu projeto quer que você use um framework pago (sabe como é que é, sempre tem aqueles clientes que precisam pagar por tudo, mesmo que seja para poderem "dormir mais sossegados à noite" - nem adianta ficar falando sobre as virtudes do Open Source), compre uma licença de uso do Toplink (pegue a última versão do JDeveloper para poder ver como é que funciona o Toplink).
Parece que para o Oracle ele é bem performático (of course).
[WWW]
maikonaraujo
JavaChild
[Avatar]

Membro desde: 19/01/2005 05:20:25
Mensagens: 108
Localização: Rio de Janeiro - RJ
Offline

O Hibernate possui várias configurações para otimização que se vc fosse implementar gastaria muito tempo. Se bem configurado o Hibernate faz com que vc acesse o banco somente quando for absolutamente necessário ao contrario do que acontece com um DAO ou outra opção. O exemplo mais simples é configurar o Hibernate para manter conexões em cache com o C3PO, mas existem mais!
Acho que o Hibernate traz um ganho em performance mesmo não sendo tão rápido para o acesso mas pode fazer bem pouco.

Esta eu não tenho certeza, mas acho que com o hibernate vc pode configurar as querys para utilizar índexes e outras vantagens de seu banco específico.

How many people can read hex if only you and dead people can read hex? 57006

In a world without fences and walls, who needs Gates and Windows?

The box said 'Requires Windows 95 or better'. So I installed LINUX
[MSN]
Fabricio Cozer Martins
GUJ Ranger
[Avatar]

Membro desde: 08/05/2004 10:22:03
Mensagens: 935
Localização: Salvador/Brasil
Offline

jprogrammer wrote:Já que o JDBC puro é legal porque vc não usa esses geradores de códigos que geram o DAO para vc a partir de uma tabela ?

http://www.codefutures.com/products/firestorm/editions/matrix.html


Caramba, já existe ???
estava querendo desenvolver um desse nipe....
Já usou este?


Fabrício Cozer Martins
Analista de Sistemas
Bacharel em Ciência da Computação da UFBa
Sun Certified Programmer for Java 2 Platform 1.4
Sun Certified Web Component Developer for J2EE 1.4
[MSN] [ICQ]
Mauricio Linhares
Moderador
[Avatar]

Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline

maikonaraujo wrote:Esta eu não tenho certeza, mas acho que com o hibernate vc pode configurar as querys para utilizar índexes e outras vantagens de seu banco específico.


Nops, o Hibernate não usa os índices do banco, quem usa os índices é o próprio banco e por consequência, qualquer coisa que use o banco

Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr

Screencast de Introdução a linguagem Objective-C
[WWW]
ZehOliveira
GUJ Ranger

Membro desde: 12/12/2003 22:13:49
Mensagens: 964
Localização: Maceio-AL
Offline

Nops, o Hibernate não usa os índices do banco, quem usa os índices é o próprio banco e por consequência, qualquer coisa que use o banco

Creio que indexes tenha sido uma palavra mal escolhida. Acho que ele estava falando sobre features especificas como os hints do Oracle que dizem pro banco executar outro plano de consulta, por exemplo...
douglasfs
JavaEvangelist
[Avatar]

Membro desde: 31/12/2002 17:50:02
Mensagens: 305
Localização: São Paulo / Brasil
Offline

fsmachadorj wrote:Estou desenvolvendo uma aplicação em que a velocidade de uma consulta no banco é um requisito muito relevante. O banco de dados que eu irei utilizar é o MySQL, pois já possui um excelente desempenho.

Alguém sabe me dizer qual é o framework de mapeamento objeto/relacional que oferece o melhor desempenho para consultas no banco? Hibernate? iBatis? Outro?

Grato,

Fernando Machado.


Até o momento eu nunca trabalhei com Hibernate, mas nos últimos 8 meses venho trabalhando somente com o iBatis.

Sem entrar no mérito de cada framework, cada um se encaixa bem em um determinado tipo de problema, no meu caso, todos os meus atuais problemas são muito bem revolvidos com iBatis.

De "cabeça", os tipos de otimizações mais comuns que você pode fazer com o iBatis é ativar o mecanismo de cache e lazy loading de objetos dependentes.

Tirando as ferramentas de mapeamento, as otimizações dependem muito de como foi modelado o banco de dados (tanto o modelo lógico e físico), o uso correto de índices e a escolha de um driver JDBC descente (no caso do Java), etc.

Um link interessante comparando os benefícios de cada um :

http://www.mail-archive.com/ibatis-user-java@incubator.apache.org/msg01241.html

Obs: Nessa thread tem algumas opiniões interessantes.

Espero que tenha lhe ajudado

[]s

Douglas

This message was edited 1 time. Last update was at 25/05/2005 00:32:52


SCJP 1.4, SCWCD 1.4, SCBCD 5.0 beta
jprogrammer
Virtual Machine Man
[Avatar]
Membro desde: 04/02/2005 13:49:20
Mensagens: 546
Offline

Fabrício Cozer Martins wrote:
Caramba, já existe ???
estava querendo desenvolver um desse nipe....
Já usou este


Nunca usei mas esse aí parece que é pago.
Mas tem um monte. Tem até que gera para o hibernate.
Mas se vc tiver tempo crie um, quem sabe não fica legal tb.
Aí vc posta aqui no GUJ.

Referente ao CACHE.
Em um sistema em que tenha muitas atualizações e as iformações não podem estar desatualizadas o cache é recomendado ?

O bom menino !!!
cv
Moderador
[Avatar]

Membro desde: 04/04/2003 00:32:12
Mensagens: 7842
Localização: São Paulo, SP
Offline

jprogrammer wrote:Referente ao CACHE.
Em um sistema em que tenha muitas atualizações e as iformações não podem estar desatualizadas o cache é recomendado ?


Sim, pq na maior parte dos casos eh mais barato atualizar o cache do que a base de dados. Um exemplo bom disso eh o que o Coherence (STFG) faz.
[Email] [WWW] [Yahoo!] [MSN] [ICQ]
jprogrammer
Virtual Machine Man
[Avatar]
Membro desde: 04/02/2005 13:49:20
Mensagens: 546
Offline

Mas mesmo uma atualização online por vários usuários ?
Uma curiosidade:
Como o hibernate implementa isso ?

Outra coisa:
E para sistemas que a base de dados é acessada por sistemas legados ou que não sejam Java ?

O bom menino !!!
 
Índice dos Fóruns » Arquitetura de Sistemas
Ir para:   
Powered by JForum 2.1.8 © JForum Team