Hibernate e Deploy

1 resposta
ikki_de_fenix

Olá Pessoal !!!

To usando o Hibernate 3 e toda vez que executo um deploy na minha aplicação e pego uma sessão, o Hibernate inicia todas as configurações iniciais (leitura dos arquivos hbm e pool de conexões)
demorando muito tempo tornando o trabalho improdutivo, existe alguma forma de pular isso ? Ou que isso seja executado uma única vez.

Abraços

1 Resposta

J

Esse esquema foi feito de acordo com o manual do hibernate:

public class HibernateUtil {
    private static Logger logger = Logger.getLogger(HibernateUtil.class);

    private static final SessionFactory sessionFactory;

    static {
        try {
            // Create the SessionFactory
            sessionFactory = new Configuration().configure().buildSessionFactory();
        } catch (Throwable ex) {
            // Make sure you log the exception, as it might be swallowed
            logger.error("Não foi possível configurar o hibernate.", ex);
            throw new ExceptionInInitializerError(ex);
        }
    }

    public static final ThreadLocal session = new ThreadLocal();

    public static Session getSessao() {
        Session s = (Session) session.get();
        // Open a new Session, if this Thread has none yet
        if (s == null) {
            s = sessionFactory.openSession();
            session.set(s);
            logger.debug("Nova sessão do hibernate aberta.");
        }
        else
            logger.debug("Retornada sessão do hibernate aberta anteriormente.");
        return s;
    }

    public static void fechaSessao() {
        Session s = (Session) session.get();
        if (s != null)
        {
            logger.debug("Sessão do hibernate fechada.");
            s.close();
        }
            
        session.set(null);
    }
}
Como a configuração é num bloco static, só é feita na primeira vez que vc requisita uma sessão, pelo método HibernateUtil.getSessao(). Usar isso ainda tem a vantagem de vc só ter uma sessão do hiber aberta por thread, por causa do uso do ThreadLocal. Maiores informações, consulte o manual do hiber, tem um código quase igual e explicadinho. Espero que ajude.
Criado 15 de junho de 2005
Ultima resposta 15 de jun. de 2005
Respostas 1
Participantes 2