Do que trata o artigo

Este artigo mostrará as principais técnicas para execução de querys no NHibernate, o Framework Open Source para Mapeamento Objeto/Relacional na plataforma .NET. Veremos quais são as novas funcionalidades de Querys, que estão sendo planejadas para a terceira versão do Nhibernate.

Para que serve

Nessa terceira versão do NHibernate teremos um Provider LINQ nativo e uma nova API para querys tipadas, conhecida com QueryOver. Essas duas novas formas de se criar consultas no NHibernate 3, aumentam ainda mais o leque de possibilidades que temos na realização de pesquisas com o NHibernate.

Em que situação o tema é útil

Estar atento às novas funcionalidades do NHibernate 3 irá lhe ajudar a implementar soluções com essa ótima ferramenta. Você verá como agora é possível utilizar as novas opções de Query do NHibernate, o que o torna ainda mais compatível com o .NET Framework 3.5.

Resumo do DevMan

O NHibernate é o projeto de software livre baseado na plataforma .NET Framework, mais bem sucedido que temos hoje. Isso se deve ao fato de ele oferecer uma ótima solução de Mapeamento Objeto/Relacional, que atende não só ao Microsoft SQL Server, mas todos os principais bancos de dados relacionais utilizados no mercado.

Com o NHibernate podemos criar uma solução verdadeiramente orientada a objetos, utilizando as melhores técnicas e padrões conhecidos no mercado. E podemos fazer isso sem perder em nada o poder e a confiabilidade dos bancos de dados relacionais.

Neste artigo veremos que apesar do NHibernate ser um projeto de software livre, ele está em ótimas mãos. São ótimas empresas e desenvolvedores comprometidos em manter essa ferramenta atualizada com as novas versões do .NET Framework. Veremos neste artigo quais são as novidades para a construção de Querys nessa terceira versão do NHibernate.

O NHibernate já é um velho conhecido nosso, sendo tema recorrente aqui na .NET Magazine. Não é à toa, já que ele é uma das ferramentas de O/RM mais eficientes que temos no mercado. O/RM é uma dessas muitas siglas que temos na área de software, e significa Mapeamento Objeto/Relacional (Object/Relational Mapping).

Mapeamento Objeto Relacional é uma técnica onde criamos literalmente um mapeamento entre as tabelas de um banco de dados, com as classes de uma aplicação orientada a objetos. Na Programação Orientada a Objetos, quando temos que armazenar dados em um banco de dados relacional, o O/RM é uma excelente prática.

Apesar de não ser uma prática obrigatória, o uso de ferramentas de O/RM tem se tornado uma tendência muito forte de mercado. Uma prova disso é que a própria Microsoft tem investido muito na construção do seu próprio O/RM, o ADO.NET Entity Framework.

O NHibernate surgiu pouco tempo depois da criação da própria plataforma .NET Framework. Na verdade, o NHibernate veio da plataforma Java, onde temos o Hibernate, que é amplamente utilizado e adotado por essa comunidade de desenvolvedores.

Daí você já deve perceber que o NHibernate é fruto de um tipo de trabalho não muito convencional no meio Microsoft, o software livre. E é curioso dizer isso, mas o NHibernate é um projeto totalmente aberto, para a plataforma Microsoft .NET Framework.

Quando o NHibernate começou a ganhar adeptos, ainda estávamos na versão 2.0 do .NET Framework. A solução mais próxima a um O/RM que a Microsoft oferecia na época, eram os famosos Datasets Tipados, nativos do próprio ADO.NET.

Porém, os Datasets estão longe de ser um O/RM, pois simplesmente simulam a estrutura do próprio banco de dados. Apesar de ser uma solução muito eficiente em situações simples, ao longo do tempo os Datasets podem se tornar um pesadelo para a manutenção de softwares mais complexos.

Foi nesse cenário que o NHibernate ganhou espaço. Uma mistura de produtividade do lado dos bancos de dados, com boas práticas do lado da orientação a objetos. E mesmo quando a Microsoft lançou soluções como LINQ to SQL e a primeira versão do ADO.NET Entity Framework, o NHibernate não perdeu seus usuários.

O motivo principal para que isso não tenha acontecido, é o comprometimento dos envolvidos no projeto. São empresas e desenvolvedores, interessados na qualidade da ferramenta, que não para de crescer. Desde o seu lançamento já tivemos três importantes verões: a 1.2, 2.0 e a atual 2.1.

Além disso, o NHibernate foi extrapolando os limites do O/RM, e outros projetos paralelos foram surgindo, agregando ainda mais valor no que podemos chamar de “Ecossistema NHibernate”. São iniciativas como o uNHAddins, Fluent NHibernate, Hbm2Net, Nhibernate.Validator, NHibernate.Caches, NHibernate.Mapping.Attributes, NHibernate.Linq, NHibernate.Burrow, NHibernate.Spatial, NHibernate.ProxyGenerators, entre outras diversas iniciativas livres ou proprietárias.

Nota do Devman

uNhAddins

uNHAddins significa unofficial NHibernate Addins, ou Addins não oficiais do NHibernate. Esse projeto contempla uma série de funcionalidades que fogem do escopo principal do NHibernate, mas que ajudam no desenvolvimento de uma aplicação que faz uso do NHibernate.

Suas principais funcionalidades estão ligadas às formas diferentes de se realizar o Gerenciamento de Sessão do NHibernate. São o Session per Request (uNhAddins.Web), Session per Call (uNhAddins.WCF) e o Session per Conversation (uNhAddins). Esse último é muito famoso e já foi tema de um artigo aqui na .NET Magazine, onde falamos de transações distribuídas com o NHibernate.

Além disso, o uNhAddins oferece recursos para adicionar comportamento nas nossas entidades de negócio, em tempo de execução (INotifyPropertyChanged, IDataErrorInfo e IEditableObject). E também temos Validators Adapters, que é uma camada de abstração para frameworks de validação, como o NHibernate Validator, o Data Annotations, o Validation Application Block e o Castle Validator.

Nota do Devman

NHibernate Contrib

O NHibernate Contrib é uma série de pequenos projetos que oferecem recursos adicionais ao NHibernate. O Mais famoso deles no momento é o NHibernate.Linq, que habilita as famosas querys LINQ da Microsoft no NHibernate. Além do NHibernate.Linq, temos os seguintes projetos no NHibernate Contribs:

NHibernate.Hbm2Net: É uma ferramenta de geração de código, que irá gerar as nossas entidades de negócio com base nos mapeamentos XML do NHibernate.

NHibernate.Validator: É um framework de validação para o NHibernate

NHibernate.Caches: Contém uma série de provedores de Cache para o mecanismo de Cache do NHibernate.

NHibernate.Mapping.Attributes: Oferece uma forma alternativa de se fazer os mapeamentos no NHibernate. Ao invés de se usar arquivos XML, nesse caso usa-se atributos do .NET nas próprias entidades de negócio. ...

Quer ler esse conteúdo completo? Tenha acesso completo