iBATIS x Hibernate

5 respostas
guilhermevh

Boa tarde pessoal,

Ultimamente venho trabalhando com o iBATIS em algumas aplicações pessoais, e ao longo desse período gostei muito de trabalhar com ele, e gostaria de alguma opinião diferente, pois estou pretendendo utilizar aqui no meu trabalho, em um refactor que vou fazer no sistema(hoje em dia é feito tudo na mão, jdbc puro.).
Vocês já usaram? Qual foi a experiência? Prefere Hibernate? (eu pessoalmente não gosto) Algum comentário?

Abraços

5 Respostas

M

Com o IBATIS todo mapeamento é feito em cima de querys as quais você cria em um XML. Essa abordagem é boa quando não se tem controle sobre o banco de dados, pois assim pode-se mapear qualquer schema para o seu Bean. O IBATIS não gerencia seus beans, portanto ele não garante que o bean que você está usando realmente é o mais atualizado com o banco de dados.

Ja o hibernate faz o mapeamento das tabelas diretamente nos beans(Entity) e os gerencia em memória, garantindo que voce possui os dados mais atuais no seu bean. Além disso o hibernate possui gerenciamento de cache de dois niveis, diminuindo o overhead de buscas no seu banco de dados. No hibernate tambem é possivel fazer o mapeamento das querys nativas para o seu bean.

As duas ferramentas são muito boas, mas deve-se analisar qual a melhor para o perfil do seu projeto. Caso esteja iniciando um projeto novo aconselho utilizar o hibernate pois a produtividade é mais alta e existe muito mais pessoas no mercado que conhecem hibernate, facilitando e barateando futuras trocas de profissionais no projeto.

Pedrosa

IBATIS também possui cache, creio que o Hibernate seja bem mais poderoso e popular, atualmente trabalho com os 3 Hibernate, IBATIS e JDBC, para quem tem conhecimentos avançados em SQL a tendência e se dar muito bem com o IBATIS, mas se trocar o banco de dados suas querys vão ter que ser refeitas problema igual ao do JDBC, já com Hibernate é outro modelo tudo é baseado em objetos a partir da versão 3 com o uso das anatoções se tornou muito mais produtivo, caso troque de banco de dados basta apenas fazer alguns ajustes, resumindo Hibernate!

guilhermevh

Um case muito poderoso é o MySpace que utiliza o iBATIS, e existe uma quantidade absurda de acessos, gerando alta carga o que já no Hibernate (não tenho certeza) não suporta tanto pelo que andei vendo.
O iBATIS utiliza o mapeamento relacional, então em questão a compatibilidade com outros banco de dados, creio que se utilizar os padrões SQL não haverá problema (eu sei que existe bancos que não seguem todas as regras), mas com o iBATIS não seria tão necessário. Em questão de facilidade o Hibernate não gera um alto custo de trabalho comparado ao iBATIS?

Pedrosa

Cara é relativo se montar um DAO generico onde vamos supor que atenda a 80% do seu sistema o restante será o seu trabalho.

Segue um exemplo de uma DAO generico do Hibernate:
http://www.urubatan.com.br/dao-generico-um-exemplo-a-pedidos/

Olha a produtividade que isso pode te trazer.

E com certeza o Hibernate suporta grande quantidade de dados e possuem diversas customizações para tal.

fantomas

Pra quem não conhece / não está acostumado, sim.

Aliás o Hibernate é considerado por muitos como um framework ainda muito complexo.

No seu caso, onde a estrutura de dados já existe, e provavelmente seu tempo deve ser curto; indico o iBATES.

P.S Com o Hibernate é mais fácil obter um modelo “mais orientado a objetos”.

flws

Criado 19 de março de 2009
Ultima resposta 19 de mar. de 2009
Respostas 5
Participantes 4