Gerenciamento de sessão do NHibernate no ASP.NET MVC
Atualmente, estou brincando com a classe HybridSessionBuilder encontrada na postagem do blog de Jeffrey Palermo:
http://jeffreypalermo.com/blog/use-this-nhibernate-wrapper-to-keep-your-repository-classes-simple/
Usando essa classe, meu repositório fica assim:
public class UserRepository : IUserRepository
{
private readonly ISessionBuilder _sessionBuilder;
public UserRepository(ISessionBuilder sessionBuilder)
{
_sessionBuilder = sessionBuilder;
}
public User GetByID(string userID)
{
using (ISession session = _sessionBuilder.GetSession())
{
return session.Get<User>(userID);
}
}
}
Essa é a melhor maneira de gerenciar a sessão / fábrica do NHibernate? Ouvi coisas sobre a Unidade de Trabalho e a criação de uma sessão por solicitação da Web e a liberação no final. Pelo que sei, minha implementação atual não está fazendo nada disso. Basicamente, depende do Repositório para pegar a sessão na fábrica de sessões e usá-la para executar as consultas.
Existem armadilhas para acessar o banco de dados dessa maneira?