Quando usar hibernate?

Não sei se este topico ja existe mas… ai vai minha questão.

Estou começando a usar o hibernate estou fazendo uns testes ainda, eu gostaria de saber daqueles que ja o utilizam , quando eu devo usar o hibernate ?

É recomendado usar hibernate qdo a quantidade de informações for pequena ?

Creio que a quantidade de dados persistidos não seja um fator para decidir ou não pelo Hibernate.

quel tal sempre ?

poxa… seria interessante você usar hibernate pra criar objetos com 20 propriedades e pegar 2.000.000 de registros do banco? :open_mouth:

acho que hibernate é bom para valores não-exorbitantes, onde um selectzinho vai retornar 2 milhões de registros

e com JDBC tradicional vc listaria 2.000.000 do banco?

com um bom controle pra não dar memory leak ou paginando daria :slight_smile:

(bom nunca fiz o teste, são suposições hehe)

[quote=Leozin]com um bom controle pra não dar memory leak ou paginando daria :slight_smile:
(bom nunca fiz o teste, são suposições hehe)[/quote]

Memory leak e Um OutOfMemory sao duas coisas completamente diferentes.

Olá…

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.

Até mais

Patty

Fala galera , Bom dia !

Muito bom de se discutir este asssunto.

Estou certo em afirmar que tenho uma perca de performance em consultas(SELECT) no BD ?

[quote=scottys0][quote=Leozin]com um bom controle pra não dar memory leak ou paginando daria :slight_smile:
(bom nunca fiz o teste, são suposições hehe)[/quote]

Memory leak e Um OutOfMemory sao duas coisas completamente diferentes.[/quote]

perdão, é out of memory que quis me referir, to com memory leak na cabeça ainda huahuahua

mas então qual seria a melhor solução pra grande volume de dados? Utilizar hibernate sem mais?

???
Ele quer saber quando é “necessário”

Quando usar hibernate?
Quando for necessário ¬¬

falou falou e não disse nada

Olá…

Existem aqui no GUJ as seguintes discussões sobre a performance do Hibernate:

:arrow: http://www.guj.com.br/posts/list/15/31323.java
:arrow: http://www.guj.com.br/posts/list/22260.java

Mas configurando o Hibernate direitinho, ele não terá problemas com consultas…

Até mais

Patty

[quote=Leozin]

???
Ele quer saber quando é “necessário”

Quando usar hibernate?
Quando for necessário ¬¬

falou falou e não disse nada[/quote]

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…

Até mais

Patty

então conclui-se que a senhorita quis dizer “use quando quiser” :slight_smile:

nefertiti , concordo com vc…!

Melhor: eu diria quando a situação (projeto) assim exigir!!! :wink:

Até mais

Patty

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.

Abraços

Rafael Oliveira

[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?

pcalcado

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

Rafael Oliveira