Tempo de vida de uma SessionFactory Hibernate/Web

Olá pessoal…

Estou com dúvida em relação ao tempo de vida e disponibilidade de uma SessionFactory criada para o Hibernate para uso em um site…

Para cada novo usuário que entrar no site será criada uma nova session ou ele utiliza a mesma para a aplicação inteira?
Eu posso abrir e fechar a sessão de modo seguro utilizando session.close() sem afetar os outros usuários que estão acessando o site ao mesmo tempo?

Para Web é mais indicado criar a SessionFactory utilizando Thread (vide código abaixo) ou é mais para desktop?

	private static final ThreadLocal threadSession = new ThreadLocal();

	// Create the initial SessionFactory from the default configuration files
	static {
		try {
			configuration = new Configuration();
			sessionFactory = configuration.configure().buildSessionFactory();
		}
		catch (Throwable ex) {
			// We have to catch Throwable, otherwise we will miss
			// NoClassDefFoundError and other subclasses of Error
			log.error("Building SessionFactory failed.", ex);
			throw new ExceptionInInitializerError(ex);
		}
	}

Obrigado

A session factory é como o nome diz, fabrica de sessions. O ideal é que você crie uma session factory apenas, e chame ela para criar as sessions. Voce criaria uma para cada usuario, por exemplo no login. Voce pode deixar essa session aberta ate o usuario sair, mas pode ter problemas com lazy initializing, pode fechar se quiser pois nao afeta outros usuarios. Faça o que for melhor para você, mas apenas uma sessionFactory pq é custoso criar sessions factories.