Opinião Hibernate

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

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

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.

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/

[quote=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/[/quote]

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.

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.

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?

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.