NHibernate: gerenciamento de sessão
Faz um bom tempo que estou utilizando o NHibernate (NH) nas minhas aplicações .NET. Na empresa onde trabalho, também já estamos construindo alguma coisa utilizando esse excelente framework.
Nesse post vou falar sobre uma das principais dúvidas que os usuários têm ao trabalhar com o NH: como gerenciar as sessões (lembrando que cada sessão é semelhante a uma conexão com o banco de dados).
Existe um “padrão” muito utilizado nesta situação que se chama Session per Request. Como o próprio nome diz, uma única sessão estará aberta e disponível durante o Request.
Tendo em vista essa definição, fui atrás de alguma coisa que implementasse esse conceito. Encontrei um ótimo exemplo no site do Simon Green.
Esta implementação utiliza um IHttpModule para garantir que ao final do Request a sessão seja fechada. Além disso, existe uma classe chamada Db que possui vários métodos estáticos que implementam as funcionalidades CRUD (Create, Read, Update e Delete).
Um ponto muito interessante deste exemplo é a propriedade Session da classe Db. Ao acessá-la, se ainda não existe uma sessão aberta, então se abre uma e armazena-se ela no HttpContext.Current.Items. Se um novo acesso for feito no mesmo Request, a mesma sessão será utilizada evitando todo o overhead que existe para criar, configurar e estabelecer uma sessão.
É isso aí! T+




Ola Marcos,
sobre esse artigo NHibernate: gerenciamento de sessão, estava procurando o exemplo no site do Simon Green mais parece não estar mais disponivel.
você ainda o tem? gostaria de visualisa-lo.
Pois estou começando a desenvolver uma aplicação no .net e estou tento problemas em relação a conexão.
Abraços,
Henrique
Segue o link para o artigo do Simon Green:
http://blogs.intesoft.net/post/2005/07/NHibernateHelper-Project.aspx