Session.load() Sessao tem que estar sempre aberta? Hibernate 3

1 resposta
diogenesvit

Bom dia galera, notei um problema em um dos metodos das minhas classes DAO
Segue o codigo

public PessoaFisica retrieve(Long pk) throws Exception {

Session session = HibernateUtil.getSessionFactory().getCurrentSession();

  session.beginTransaction();

  PessoaFisica pessoa = (PessoaFisica) session.load(PessoaFisica.class, pk);

  return pessoa;

}

Bem a principio sempre achei estranho a transaçao continuar aberta más caso eu tentasse recuperar os dados da classe Pessoa gerada eu n conseguia entao descobri por padrao que a transacao deveria estar aberta para funcionar dessa maneira, mas caso em um codigo eu faça referencia a dois DAOs diferentes que passem por esse mesmo método semelhante dispara uma exceçao, nao sei se por existir uma transacao em aberto ou nao! Já tentei com o get ao inves do load e nao funciona tambem!!!

Alguem tem uma idéia ou sugestaod e como fazer corretamente???

1 Resposta

alberto_ribeiro

Bom dia, olha o que você poderia fazer é fechar a transação… ou senão você pode criar uma camada antes do DAO como um BusinessDelegate onde lá você abriria a transação e no DAO você usaria as sessions… assim pro mesmo método do BusinessDelegate você poderia chamar 2 métodos do mesmo DAO…

[]'s

Criado 11 de setembro de 2007
Ultima resposta 12 de set. de 2007
Respostas 1
Participantes 2