Hibernate e HttpSession em aplicação web

Saudções pessoal!

Estou criando uma aplicação web com JSP, Servlet e Hibernate Annotations. Li que não se deve criar vários objetos SessionFactory, uma vez que são muito pesados. Então pensei em criar apenas um e que, sempre que eu precisasse dele em alguma parte da aplicação pudesse recuperá-lo. Para tal, pensei em colocá-lo dentro de um HttpSession. Minhas dúvidas são as seguintes:

1ª - Onde posso criar o SessionFactory e como acessá-lo?
2ª - Como descobrir qual a sessão (HttpSession) atual, dentro de um Bean?
3ª - Existe alguma maneira melhor de se fazer isso?

Grato.

O jeito mais fácil (e que certamente muita gente já usou/usa aqui) é deixar o SessionFactory como static (assim armazenando apenas 1 instancia dele para todo o sistema). Procure no site oficial do Hibernate sobre o HibernateUtils, acredito que ele usa esse esquema.

Outra coisa (e mais moderna) é você utilizar DI (Dependecy Injection), ou seja, você injeta o seu SessionFactory onde você queira utilizá-lo. Se você puder usar o Spring framework, procure sobre o seu módulo de Transação + Hibernate, você vai ver que é show de bola.

Agora se você quer iniciar o SessionFactory na iniciação da aplicação, você pode criar um servlet, que será executado quando o servidor subir (use a tag <on-load-startup>1 no web.xml. No fórum isso já foi discutido algumas vezes