Como configurar o HibernateUtil para ambiente WEB?

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?

isto http://www.hibernate.org/hib_docs/v3/reference/en/html/tutorial.html#tutorial-firstapp-helpers

Se você tivese lido até embaixo -> http://www.hibernate.org/43.html

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