
=left>NHibernate
Portabilidade entre Databases
Recentemente, na 46ª edição desta revista, eu escrevi um artigo sobre a metodologia de desenvolvimento MVC e o uso do NHibernate como framework de persistência.
Na ocasião foi desenvolvida uma aplicação Web para controle de um fórum de dúvidas sobre tecnologia. Neste artigo tivemos a oportunidade de desenvolver todas as camadas que envolvem o MVC, e adicionalmente, vimos como implementar o NHibernate em nossas aplicações .NET.
Uma das características principais do NHibernate que não foi abordada no artigo da edição 46, é a portabilidade entre databases. Quando falamos em portabilidade entre databases, estamos dizendo que com o NHibernate é possível trocarmos o database da nossa aplicação depois de ela estar pronta, e com o mínimo esforço.
Neste artigo iremos ver exatamente isso. Com base na aplicação que foi criada na edição 46, vamos trocar o database e ver como é simples fazer isso com os principais databases que temos no mercado.
Solução Forum
Para que você consiga realizar os exemplos deste artigo é imprescindível que você tenha a solução completa que foi desenvolvida no artigo que tratou do MVC e NHibernate.
Há duas formas de você conseguir esta solução. Uma é lendo o artigo citado e realizar passo a passo os exemplos, para no final ter a solução desenvolvida. A outra opção é baixar no site da DevMedia a solução pronta. Para isso acesse o link: ass=Corpo style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left" align=left>Como nossa aplicação se trata de um fórum, nossa camada Model contém apenas três classes: Topic.cs, Thread.cs e Post.cs. Você confere o modelo completo com fields, propriedades, métodos e associações na Figura 3.
A camada View é composta simplesmente das páginas Web da aplicação, e uma das regras principais do MVC impede que a camda View tenha acesso direto à camada Model. É aí que entra a camada Controller.
Na camada Controller teremos uma classe auxiliar para cada classe da camada Model. Assim, na aplicação fórum temos as classes cntrTopic.cs, cntrThread.cs e cntrPost.cs. Cada uma delas é responsável por fazer a interface entre o Model e o View, para a respectiva classe. Basicamente, o Controller recebe os dados inputados na View e persiste no Model. E, adicionalmente, o Controller também recupera os dados do Model e enviao ao View. Você entenderá melhor os detalhes desta integração, lendo o artigo da edição 46.

Figura 2. MVC e Nhibernate

Figura 3. Modelo de Classes da Aplicação Fórum
Para você ter uma idéia de todos os itens que compõe a solução fórum, dê uma olhada na Figura 4, onde temos a Solution Explorer com os três projetos que representam as três camadas de que acabamos de falar.

Figura 4. Solução Forum
E para fecharmos a arquitetura da solução fórum, dê mais uma olhada na Figura 2. Veja que a função do NHibernate é integrar a camada Model com um database relacional da nossa escolha.
A principal vantagem com a utilização do ...