Ola pessoal, tudo na paz,
recentemente estou trabalhando com o Hibernate utilizando as Annotations, estava seguindo o livro Java Persistence com Hibernate (falando nele, o livro é muito bom) e encontrei alguns problemas na hora de executar os códigos com Annotations, pois bem resolvi então escrever aqui para todos alguns macetes de como evitar isso.
Bom vamos lá:
1 - Um problema muito comum é que quando utilizamos o mapeamento com XML (para quem está acostumada a utilizar dessa maneira), a nossa classe HiberneteUtil que é responsável por abrir a conexão, utilizamos da seguinte forma para pegar a SessionFactory:
SessionFactory sessionFactory = new Configuration.configure().buildSessionFactory();
Em contra partida quando utilizamos as Annotations devemos proceder da seguinte forma: SessionFactory sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();, deste modo indicamos para o Hibernate que ele deve pegar as configurações das Annotations.
2- Configuração do Hibernate.cfg.xml.
No mapeamento de configuração do Hibernate utilizando arquivos hbm.xml declara-se o mesmo da seguinte forma:
…
<!-- lista o xml mapping -->
[b]<mapping resource="hello/Message.hbm.xml" />[/b]
...........................................................
</session-factory>
para trabalhar com Annotations deve-se mudar a linha em negrito para para cada classe que será mapeada, parece simples essa alteração, mais muitos iniciantes esquecem de fazer as configurações básicas e acabam ficando loucos com os erros no console.
3 - Incompatibilidade de .jar
Tome muito cuidado com esse problema pois o mesmo é muito comum, e pode atrapalhar a vida de qualquer desenvolvedor, quando estamos compilando o projeto pode aparecer erros do tipo:
org.hibernate.MappingException: An AnnotationConfiguration instance is required to use <mapping …
java.lang.NoSuchMethodError: method org.objectweb.asm.ClassWriterhibernate config .....
java.lang.NoClassDefFoundError: freemarker/template/TemplateException
entre outros, [b]tais erros ocorrem por incompatibilidade de jar's ou a ausências dos mesmos[/b], recomendo que sempre utilize a versão mais [b]recente de cada jar[/b] em seu projeto.
Bom pessoal, espero ter ajuda a todos, sei que ainda falta muita coisa, mais acredito que estou dando a minha contribuição.
Abraçosss.