Pessoal como vcs configuração o HibernateUtil, pois estava procurando e achei o monte de jeito de configurar o HibernateUtil, como vcs usam para sistema Web com muito acessos Simultâneos?
O que diabo é o HibernateUtil?
Há então ao invez de usar o HibernateUtil eu uso esse filters
HibernateSessionRequestFilter e
HibernateSessionConversationFilter é isso mesmo? é que meu ingles é ruim.
aorocha, recomendo vc dar uma lida no tutorial “introdução ao hibernate 3” feito pelo Maurício Linhares, que está aqui no GUJ.
Aproveitando o gancho do tópico, gostaria de esclarecer uma dúvida com o Maurício (ou alguém que estiver por dentro):
Em minha classe helper que contém o “getSession”, estou abrindo a sessão apenas uma vez e deixo aberta durante toda a aplicação usando ThreadLocal. Vi no tutorial do Maurício, no método “getSession” mostrado lá, que retorna uma nova sessão criada com o método “SessionFactory.openSession()”. Gostaria de saber se do jeito que estou (usando ThreadLocal) é mais recomendado ou se depende da aplicação que irá usar? Pois minha aplicação tem muito acesso.
Minha classe HibernateUtility:
package persistencia.hibernate;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
public class HibernateUtility {
private static SessionFactory sessionFactory;
private static final ThreadLocal sessionThread;
static {
sessionThread = new ThreadLocal();
sessionFactory = new Configuration().configure().buildSessionFactory();
}
public static Session getSession() {
Session session = (Session)sessionThread.get();
if (session == null) {
session = sessionFactory.openSession();
sessionThread.set(session);
}
return session;
}
public static void closeSession() {
Session session = (Session)sessionThread.get();
sessionThread.set(null);
if (session != null && session.isOpen()) {
session.flush();
session.close();
}
}
}
Código do HibernateUtility do tutorial do Maurício:
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
public class HibernateUtility {
private static SessionFactory factory;
static {
try {
factory = new Configuration().configure().buildSessionFactory();
} catch (Exception e) {
e.printStackTrace();
factory = null;
}
}
public static Session getSession() {
return factory.openSession();
}
}
Agradeço desde já.
Depende de como a aplicação vai utilizar, o método do tutorial de introdução foi feito pra simplificar, em uma aplicação de verdade você provavelmente teria que implementar um controle de sessões e transações mais complexo, tem um exemplo de como fazer isso na continuação do tutorial -> http://www.guj.com.br/posts/list/29765.java#160349