Opinião Hibernate

7 respostas
V

Pessoal,

Já utilizei muito Hibernate para mapeamento objeto-tabela. Ou seja, quando um atributo do objeto correspondia exatamente a uma coluna da tabela.

Agora, tenho que fazer uma aplicação que produz somente relatório. Os objetos recebem seus valores de consultas (queries) que utilizam várias tabelas. Não existe relação direta entre um atributo dos objetos e uma coluna em tabela.

Em sua opinião, o Hibernate ainda é a melhor opção para uma aplicação de relatórios ou vai o JDBC mesmo ?

Abs,
Vicento

7 Respostas

iogui

Olá,Vicento,

Pelo que entendí, na sua aplicação, vc vai trazer informação que está armazenada em várias tabelas e juntar tudo pra montar relatórios, certo?
Usando ORM, vc vai ter que mapear um objeto para cada tabela que represente uma entidade no seu modelo de negócios, fora as tabelas auxiliáres (relacionamento, embeded, etc…).
Pra trazer esta informação com a ferramenta ORM vc vai ter que carregar um monte de objetos na memória e combinar seus valores para jogar no relatório.
Bom… isto não costuma ser muito performático, principalmente se as tabelas contiverem muitos dados. Mesmo considerando todas as otimizações que a ferramenta permita.
Nestes casos, sou a favor de usar JDBC puro mesmo, fazer umas queries ninja com Joins e popular DTOs no formato da consulta mesmo.
Mesmo que vc já tivesse toda uma estrutura de mapeamento ORM, ainda assim, acho que valeria a pena fazer isto em JDBC puro mesmo. Mas é esta é uma opinião geral. Teria que analizar direito o caso em particular e ver o que vale mais a pena.

[]s

otaviojava

Concordo com o colega acima.
Em termo de performance vale a pena optar pelo jdbc.
Até porque usar o hibernate somente para isso não acho nada justificável.

barbon

Olá, falando de desempenho, veja este post que comenta o desempenho do Hibernate com o TopLink, ambos JPA:

http://www.patternizando.com.br/2011/01/comparacao-de-desempenho-entre-hybernate-e-toplink-para-persistencia-baseada-em-jpa-com-mysql/

otaviojava

barbon:
Olá, falando de desempenho, veja este post que comenta o desempenho do Hibernate com o TopLink, ambos JPA:

http://www.patternizando.com.br/2011/01/comparacao-de-desempenho-entre-hybernate-e-toplink-para-persistencia-baseada-em-jpa-com-mysql/

Matéria muito legal.
Eu sempre pensava que o hibernate com toda a robustez fosse bem mais pesado que qualquer outro framework de persistência.

M

Infelizmente, o Hibernate não resolve todos os problemas, e esse é justamente onde ele quase não traz ganhos.

Também optaria por JDBC puro.

thiagobaptista

Ué, e por que não transformar essas queries em views, e depois mapear essas views como entidades no Hibernate?

Ou porque não fazer a mesma coisa com stored procedures?

V

Pessoal,
Valeu. Resolvi o problema rapidamente com JDBC. O Hibernate, neste caso, só iria complicar mesmo.

thiagobaptista ,

Stored procedures seria o ideal. Mesmo com JDBC, há maior ganho de eficiência. Mas no caso meu em questão, só tenho acesso de leitura ao banco.

Criado 27 de janeiro de 2011
Ultima resposta 1 de fev. de 2011
Respostas 7
Participantes 6