Utilizando disconnect e reconnect para sessoes no hibernate

0 respostas
X

Olá, estou apanhando ainda em Hibernate, então desculpem ae ignorância…

Estou fazendo mais ou menos assim:

Pego o id de uma lista, primeiramente eu faço uma consulta e mostro na tela:

session = HibernateUtil.getSession();

HibernateUtil.beginTransaction();

session.get(Classe.class,id);

HibernateUtil.commitTransaction();

session = HibernateUtil.desconectarSessao();

Mostro na tela os dados da classe, mas ae eu posso editar, entao eu faço um reconnect. O problema é q qnd eu uso o desconectarSessao() a sessao não desconecta e qnd dou o reconnect ele não reconecta pq não passa pelo (!isConnected). Meu HibernateUtil está assim:


public static Session getSession() {

Session s = (Session) threadSession.get();

	// Abre uma nova sessão, se esta thread ainda não tem uma

	try{

		if (s==null){

			s = sessionFactory.openSession();

			threadSession.set(s);

		}

	}catch (HibernateException ex){

		throw new InfrastructureException(ex); 

	}

	return s;

}

public static void reconnect(Session session) throws InfrastructureException {

try {

		if ((!session.isConnected()) && (session.isOpen())){

			session.reconnect();

			threadSession.set(session);

		}

	} catch (HibernateException ex) {

		throw new InfrastructureException(ex);

	}

}

public static Session desconectarSessao ()

{

	try{

		Session s = (Session) threadSession.get();

		threadSession.set(null);

    

		if (s != null)

		{	

			if ((s.isConnected()) && (s.isOpen()))

			{

				s.disconnect();

			}

		}

		return s;

	}catch (HibernateException ex){

		throw new InfrastructureException(ex);

	}

}

Eu já debuguei e vi q qnd ele passa pelo s.disconnect() ele continua com o valor s.isConnected igual a true… Alguem sabe o q pode estar acontecendo. Existe alguma outra solução pra isso? :oops:

Criado 10 de julho de 2006
Respostas 0
Participantes 1