Hibernate 3.6 tem HibernateUtil?

6 respostas
montroni

Boa noite comecei a utilizar o Hibernate 3.6 a pouco tempo e encontrei alguns videos na web que demonstram o básico de seu funcionamento, então iniciei o meu projeto e ate efetuar a primeira gravacao da tudo ok ou seja se estou no cadastro de fornecedores e faça um cadastro da certo mas se tento cadastrar outro logo na sequencia o hibernate da um excessão e não mostra nenhum erro, isso pelo que pesquisei e que nao ativei o slf4j mas tudo bem pois estou procurando a solução pra isso também e acredito que o meu problema seja quanto a sessão que alias eu nem crio pois utilizo o chamado EntityManager no DAO conforme exemplo abaixo:

EntityManagerFactory emf = Persistence.createEntityManagerFactory("projeto");
        EntityManager em = emf.createEntityManager();
        boolean resultado = false;
        em.getTransaction().begin();
        try {
            em.persist(pForn);
            em.getTransaction().commit();
            resultado = true;
        } catch (Exception e) {
            em.getTransaction().rollback();
        } finally {            
            em.close();
            emf.close();
            return resultado;
        }

e em outras versões do Hibernate vi que tem um tal de hibernateutil que pelo que entendi faz o gerenciamento das sessões então as minhas perguntas são:

Na versão 3.6 do Hibernate tenho que ter uma classe com essa finalidade ?
Ou o EntityManager tem esse finalidade ???
Se tiver que ter o gerenciador de sessões alguém teria algum exemplo para o Hibernate 3.6 ???

Agradeço desde já !

6 Respostas

heroijapa

Dentro do seu catch coloca um

e.printStackTrace()

Ai vc ve o erro no console e posta o erro aqui, assim é mais facil te ajudar

montroni

Bom dia HeroiJapa seguinte quando tento inserir o System.out.println(e.printStackTrace()); ele da um erro dizendo o seguinte:

Throwable.prinstacktrace() deve ser removido, acredito que isso seja devido ao fato do log4j ou algo do genero, tentei achar uma solução para isso mas ainda nada, mas de qualquer forma o hibernate 3.6 tem que usar um tipo de hibernateUtil para gerenciar as sessoes ou o entity manager ja faz esta tarefa ???

vlw

marcosvidolin

Acredito que a classe HibernateUil não seja da API do Hibernate e sim da sua aplicação.
Esta classe contem um código usado com frequência para obter uma Session.

de uma olhada na apostila da caelum fj21.

Att.

montroni

Justamente ai que esta minha dúvida Marcos porque ja até olhei na apostila da Caleumn e la se fala em session mas será que é para o Hibernate neste versão 3.6 ???
Porque o Hibernate 3.6 é um pouco recente não seria ??
Porque inicialmente achei que o EntityManager fizesse este controle de sessões !
E fiquei na dúvida se precisava do hibernateutil porque nos locais onde vi sobre o HibernateUtil ( que seria a questão da sessão ) o pessoal mostra como fazer a configuração dos mapeamentos das classes por XML o que não é nessário nesta versão do Hibernate, isso porque, pode ser realizado por anotações !

LPJava

essa classe HibernateUtil, é uma utilitaria criada pelo desenvolver para as coisas mais comuns que vc vai fazer com o hibernate, tipo como CRUD.
Não vem, uma classe utilitaria no framework ja pre-moldada nao, hibernateutil é um termo usado.
A respeito do seu problema, se está começando com o hibernate eu recomendaria, iniciar desde la da epoca do xml, so para ter uma ideia de como era antes, depois vc ia para os annotations, e entender a evolucao, isso é um processo importante, pois vc pega a “origem” “meio” e atual. E lembrando que muitas vagas para projetos ai com hibernate, nao sao tantos com recursos mais recentes, muitos legados usando XML. no meu blog, tem alguns posts de Hibernate, com outras tecnologias e ate com coisas basicas.
www.camilolopes.com.br
abracos,

desk

Olá amigo, o EntityManager faz o controle da session. no caso do HibernateUtil iria poupar pra vc criar esse entitymanagerfactory…

EntityManagerFactory emf = Persistence.createEntityManagerFactory("projeto"); EntityManager em = emf.createEntityManager();
vc criaria a classe hibernateUtil e teria um método pra pega essa entity… dai no hora de vc chamar vc usaria ± assim

entityManager emf = new HibernateUtil().getEntityManager() ;

espero ter ajudado
[]s

Criado 16 de janeiro de 2011
Ultima resposta 16 de jan. de 2011
Respostas 6
Participantes 5