Hibernate dar muita dor de cabeça

13 respostas
xwillianss

Galera, que negócio que dar muita dor de cabeça heimmmm. Vou desistir do Hibernate, é um saco, voce configura uma coisa depois da problema em outra. Haja paciencia. Sem contar nos tutoriais pela net, mal testados, que em vez de ajudar faz é atrapalhar. Um exemplo é um cara dizer que tem que usar um arquivo properties já o outro diz que não que tem que utilizar um arquivo de configuração hibernate.cfg.xml

13 Respostas

agodinho

Cara, se seu problema for com a sintaxe do hibernate sql sugiro o iBatis.

O hibernate, a princípio, é muito bom pra mapear sistemas desenvolvdios em metodologias OO (realmente OO) mas é meio sacal qdo vc tem de mapear sistemas legados (alguns dizem: orientados à banco). Com o iBatis vc tem total controle do sql criado ('no hibernate, senão me engano, isso só foi possível na versão 3).

Woody

S

Os tutoriais que eu achei eram muito mal explicados e/ou desatualizados mesmo.
Baixa o 2º capítulo do Java Persistence with Hibernate: http://hibernate.org/152.html

Vê se melhora.

R

Realmente tem muito tutorial ruim e antigo sobre Hibernate na web.

Acho que a dica do Schuenemann é o melhor caminho mesmo.
Sempre que preciso vou logo pra fonte mais confiável mesmo:

Próprio site do Hibernate
http://www.hibernate.org/

E a área de documentação do próprio
http://www.hibernate.org/5.html

Acho que nunca precisei de outras fontes …

Roger Leite

marcelomartins

Sim, o Hibernate vai dar muita dor de cabeça, mas no final ele vale a pena.

A maior causa das dores de cabeça com o hibernate, é culpa de quem usa ele, normalmente sem ler a documentação.

Aposto que você não leu a documentação. E ler a documentação não é ir lá na parte de configuração para ver como se configura. É ler a documentação do inicio, para entender como as coisas funcionam, e ai reduzir justamente as dores de cabeça.

Querer usar o Hibernate lendo apenas alguns tutoriais, está pedindo para se incomodar.

Jair_Rillo_Junior

marcelomartins:
Sim, o Hibernate vai dar muita dor de cabeça, mas no final ele vale a pena.

A maior causa das dores de cabeça com o hibernate, é culpa de quem usa ele, normalmente sem ler a documentação.

Aposto que você não leu a documentação. E ler a documentação não é ir lá na parte de configuração para ver como se configura. É ler a documentação do inicio, para entender como as coisas funcionam, e ai reduzir justamente as dores de cabeça.

Querer usar o Hibernate lendo apenas alguns tutoriais, está pedindo para se incomodar.

Só completando Marcelo, a documentação do Hibernate é uma das melhores documentações sobre ferramentas open-source, vale a pena tirar algumas horinhas para dar uma boa lida nela.

Grinvon

Nunca estudei à fundo o hibernate, mas o JPA sim, e já que são coisas semelhantes (um completa o outro e pode precisar do outro), então tá valendo.

É difícil, dizer que é um framework fácil não é, mas também muita coisa se observa apenas com a prática, tive que fazer um sistema peculiar e fora do convencional, e então aprendi muita coisa com esses frameworks, mas concordo, no início gera-se muita dor de cabeça.

Agora, os tuts são muitos ruins e superficiais em sua maioria, é bom começar por um livro, o já citado: Java persistence with Hibernate é muito bom, ele foi o livro que mais lí sobre tal assunto.

:arrow: Algumas dicas:

  • Saiba entender o processo de estado de objeto no hibernate, aprenda o que é e como sua aplicação deve-se comportar nesses estados, como a exemplo do datachead mode, transient, persistence.

  • Faça uma boa classe de abstração para utilizar o hibernate, saiba usar o ThreadLocal para proteger também suas instâncias.

  • Caso esteja utilizando anotações, nunca deixe anotações espalhadas em uma classe de forma aleatória, ou elas ficam na declaração das suas variáveis, ou em seus getters/setters, mas nunca espalhadas, e isso gera um erro bizzaro.

  • Dê preferência apenas à criação de um único listener para utilizar os @Post… e os @Pre… da vida, assim organiza melhor seu código e não emite erros de ficar chamando listener mais de uma vez.

  • O log4j pode ser muito útil, procurando por exemplos na internet, acha-se um fácil que pode ajudar na verbosização.

Depois comento mais, tenho que sair.

A

marcelomartins:
Sim, o Hibernate vai dar muita dor de cabeça, mas no final ele vale a pena.

A maior causa das dores de cabeça com o hibernate, é culpa de quem usa ele, normalmente sem ler a documentação.

Aposto que você não leu a documentação. E ler a documentação não é ir lá na parte de configuração para ver como se configura. É ler a documentação do inicio, para entender como as coisas funcionam, e ai reduzir justamente as dores de cabeça.

Querer usar o Hibernate lendo apenas alguns tutoriais, está pedindo para se incomodar.

Engraçado,

acho que já vi essa história em algum lugar… :?

http://www.guj.com.br/posts/list/97645.java

rodrigoy

Além de tudo isso que o Grivon falou… mais importante ainda é compreender a diferença de impedância que existe nos modelos de objeto e modelo relacional. É preciso compreender como se mapeia um objeto para o banco, suas possibilidades e limitações.

agodinho

rodrigoy:
Além de tudo isso que o Grivon falou… mais importante ainda é compreender a diferença de impedância que existe nos modelos de objeto e modelo relacional. É preciso compreender como se mapeia um objeto para o banco, suas possibilidades e limitações.

Concordo em gênero, número e grau. (só não usaria a palavra “impedância”)

yoshikichi

nao da dor de cabeça não, pelo contrario.
mas no comeco sempre é assim, lembro q comecei com jdbc puro (nativo), apanhava tambem. Isso é uma questao de estuto e dedicacao. e sobre o properties e o xml!
é o seguinte, vc pode ter os dois, mas o XML irá sobrescrever as propriedades declaradas no properties, isso se vc repetir no XML.
mas o hibernate procura primeiro o properties depois o XML , mas vc deve ter um dos dois para as configuracoes, ou configurar programaticamente.
falow.
ps: se tiver errado me corrija

fredferrao

yoshikichi:
nao da dor de cabeça não, pelo contrario.
mas no comeco sempre é assim, lembro q comecei com jdbc puro (nativo), apanhava tambem. Isso é uma questao de estuto e dedicacao. e sobre o properties e o xml!
é o seguinte, vc pode ter os dois, mas o XML irá sobrescrever as propriedades declaradas no properties, isso se vc repetir no XML.
mas o hibernate procura primeiro o properties depois o XML , mas vc deve ter um dos dois para as configuracoes, ou configurar programaticamente.
falow.
ps: se tiver errado me corrija

Ta, eu uso e nao tenho nem o properties e nem o xml, eae??!!

Brincadeira, negocio é a doc oficial do site, pq é o seguinte:
1 - Voce pode usar o Hibernate só com o properties!
2 - Voce pode usar o Hibernate só com o hibernate.cfg.xml!
3 - Voce pode usar o Hiberbate sem nenhum dos 2 acima, usando anotations!
4 - Atualmenbte uso ele com JPA annotations, no passado ja usei com xml, fiz loucuras, tipo relacionamento Muitos pra Muitos, com a mesma tabela, e acreditem, fiz o hibernate entender isso!

D

Concordo com tudo que já citaram. Usar o hibernate simplesmente lendo tutoriais é complicado pq os tutoriais são vagos e mal te ensinam a fazer um processo de inserção de dados de uma maneira clara.

A maioria dos erros que vc encontra no começo, é justamente por seguir os tutorias falho que vc encontra. Se vc puder, de uma olhada por cima no liro Hibernate In Action que ele ajuda ( não é um livro cmoplete, mas ele te oferece alguma base sobre o funcionamento do Hibernate ).

[]'s

yoshikichi

fredferrao:
yoshikichi:
nao da dor de cabeça não, pelo contrario.
mas no comeco sempre é assim, lembro q comecei com jdbc puro (nativo), apanhava tambem. Isso é uma questao de estuto e dedicacao. e sobre o properties e o xml!
é o seguinte, vc pode ter os dois, mas o XML irá sobrescrever as propriedades declaradas no properties, isso se vc repetir no XML.
mas o hibernate procura primeiro o properties depois o XML , mas vc deve ter um dos dois para as configuracoes, ou configurar programaticamente.
falow.
ps: se tiver errado me corrija

Ta, eu uso e nao tenho nem o properties e nem o xml, eae??!!

Brincadeira, negocio é a doc oficial do site, pq é o seguinte:
1 - Voce pode usar o Hibernate só com o properties!
2 - Voce pode usar o Hibernate só com o hibernate.cfg.xml!
3 - Voce pode usar o Hiberbate sem nenhum dos 2 acima, usando anotations!
4 - Atualmenbte uso ele com JPA annotations, no passado ja usei com xml, fiz loucuras, tipo relacionamento Muitos pra Muitos, com a mesma tabela, e acreditem, fiz o hibernate entender isso!

Vc usa annotations, eu não disse q não usava, disse q o xml sobrescreve o properties, eu combino os dois xml só para configurar.
Mas ah qstao é q hibernate nao é so um framework de geração de sql apenas, ele cuida do estado dos seus objetos

Transient : Objeto em memória porém não foi salvo ainda;

Persistent : Objeto já salvo porém em cache no SessionFactory mas pode ser que ainda não esteja no banco de dados;

Detached : Objeto já persistido no banco de dados;

assim sua logica fica OO e nao procedural. e dor de cabecao é o procedural.

Criado 24 de julho de 2008
Ultima resposta 29 de jul. de 2008
Respostas 13
Participantes 12