Quando utilizar?..eu diria que é preferível utilizá-lo sempre que for possível e necessário. O Hibernate facilita a conexão com o BD, e agiliza muito esse processo.
Então como eu disse…simplesmente quando for necessário…ué…tem programadores que irão preferir utilizar JDBC puro, outros optarão pelo Hibernate…alguns momentos por você não ter intimidade com o Hibernate vai preferir JDBC…não existe uma situação real em que poderíamos dizer…“olha aqui vc utiliza Hibernate,…já aqui vc utiliza JDBC”…é questão de avaliar a situação e decidir por qual dos dois optar…
Hibernate é mais útil quando a aplicação baseia-se em um modelo de domínio rico.
Muitos recursos orientados a objetos são usados.
Polimorfismo, herança, associações, composições.
Se o modelo de domínio for muito simples, pode ser mais eficiente usar outra estratégia e não ORM.
[quote=adeilton]Hibernate é mais útil quando a aplicação baseia-se em um modelo de domínio rico.
Muitos recursos orientados a objetos são usados.
Polimorfismo, herança, associações, composições.
Se o modelo de domínio for muito simples, pode ser mais eficiente usar outra estratégia e não ORM.[/quote]
boa adeilton.
Eu acrescentaria ainda que, se sua base de dados possui muitas store procedures e triggers e possui um processamento baseado em procedimentos automáticos, não é muito interessante utilizar hibernate.
Mas fora isto, e considerando o que o adeilton falou, são poucas as oportunidades que eu não usaria hibernate.
Pessoal pelo que conheço diante do utilização do hibernate vejo que não é uma boa opção para todos os tipos de aplicações.
Sistemas que fazem uso extensivo de store procedures e triggers não se beneficiam.
Visto que mapear as store procedures não é tão simples e também perde-se o desempenho mapeando as funcionalidades implementadas no BD.
Outra caso de não se utilizar é por exemplo, para o BD Oracle com seus tantos recursos disponíveis, colocar uma camada de persitencia, o Hibernate, não trará vantagens, pois perde-se todas os benefícios desse poderoso BD, o Oracle.
No entanto o Hibernate é adequado para sistemas onde a maior parte da lógica de negócios fica na própria aplicação Java.
[quote=rafoli]Pessoal pelo que conheço diante do utilização do hibernate vejo que não é uma boa opção para todos os tipos de aplicações.
[/quote]
Correto, para todos não.
Sendo que tirando manipulações pesadas de dados este tipod e recurso não deve ser frequente numa aplicação Java EE.
[quote=rafoli]e
Visto que mapear as store procedures não é tão simples e também perde-se o desempenho mapeando as funcionalidades implementadas no BD.
[/quote]
Perde-se desempenho utilizando a JVM. Perde-se desempenho utilizando um SO multitarefa. Sem números e contexto essas afiramções não dizem nada.
Independente do o-meu-sgbd-eh-melhor-que-o-seu, todos os SGBDs modernos possuem ‘beneficios’ e sao ‘poderosos’, a coisa toda é se você prefere trabalhar dentro do banco de dados ou fora. De qualquer forma os idiomas do Hibernate conseguem utilizar razoavelmente os recursos de um banco qualquer, quando é necessária uma query muitoe specífica pode-se facilmente criar uma query nativa.
Que são grande parte das aplicações que nós desenvolvedores contruímos após o fim da era cliente-servidor, certo?
Vou te dar um exemplo pra melhor esclarecer o que estou dizendo…
Tenho uma aplicação feita a muito tempo em delphi onde coloquei quase toda a lógica da aplicação no BD por store procedures e triggers, ou seja quase nada no Delphi de codificação…
Vejo um caso on não se faz necessário a utilização do hibernate, no caso de uma migração por exemplo de Delphi para Java…
Quanto ao BD o Oracle que citei foi um exemplo, o que disse foi que utilizando os recursos de um BD como o da aplicação citada acima perde-se em desempenho ao mapear no Hibernate, quando se tem quase todas as funcionalidades implementadas no BD.
"não é uma boa opção para todos os tipos de aplicações"
ou seja para algumas é útil e para outras não…isso vale pra todas as ferramentas, frameworks e utilitários