Apresento nesse artigo uma forma bem rápida e simples para gerar o mapeamento objeto/relacional para o NHibernate.
Para os que ainda não conhecem, o NHibernate é um framework para persistência de objetos em um banco de dados relacional. Ou seja, você instancia um objeto, carrega suas propriedades com os valores desejados e manda o NHibernate salvar esse objeto no banco. O NHibernate, através do objeto recebido, monta uma query SQL que será executada no banco de dados desejado.
Todo o processo de geração da query SQL é feito com auxílio dos arquivos de mapeamento. Normalmente para cada tabela do banco de dados são gerados dois arquivos:.hbm.xml e .cs. Aqui é que entra o MyGeneration: ele é um software que gera de forma rápida e simples esses dois arquivos para as tabelas do nosso banco de dados.
Não vou entrar em mais detalhes sobre persistência de objetos com o NHibernate, pois isso é assunto para outro artigo. No final desse, tem alguns links sobre isso.
- Softwares usados
MySQL 5.0 Community Edition: banco de dados que usarei para gerar o mapeamento.
Download: http://dev.mysql.com/downloads/mysql/5.0.html
MySQL Connector 1.0.7: provider .NET para acesso ao MySQL.
Download: http://dev.mysql.com/downloads/connector/net/1.0.html
MyGeneration 1.1.5.1: software que gera o mapeamento.
Download: http://www.mygenerationsoftware.com
- Instalação e configuração dos softwares
Também não vou detalhar a instalação dos softwares, afinal todas são bem intuitivas. Sobre a configuração deles, abaixo segue o que fiz:
MySQL: após instalar o MySQL, criei um banco de dados chamado MapOR e uma tabela chamada Cliente. Vou usar esse banco e essa tabela para criar o mapeamento, mas fique a vontade para criá-lo a partir de qualquer outro banco ou tabela, o processo é o mesmo. Veja na imagem abaixo a tabela criada.
MyGeneration: antes de configurar o MyGeneration instale o provider Connector.
Se no final da instalação do MyGeneration você mandou ele abrir, provavelmente uma janela Default Settings deve ter aparecido. Se você não abriu ainda o MyGeneration ou a tela ainda não apareceu, abra ele agora e no menu Edit clique em Default Settings. Nessa janela será configurado o acesso ao banco MySQL.
Na aba Connection configure o seguinte:
- Em Connection String, no campo Driver selecione MySQL2 e defina a string de conexão de acordo com suas configurações locais. Aqui ficou da seguinte forma:
- Em Language Mapping certifique-se que o campo Language esteja definido como MySQL Connector/Net (C#). Veja como ficou aqui:
- Em Database Target Mapping o campo DbTarget deve estar com o valor MySQL Connector/Net. Veja:
Pronto! O MyGeneration está configurado. Para ver se está funcionando, clique em Test Connection.
Antes de fecharmos a janela de configuração salve o que foi feito. Para isso, digite MySQL no campo Saved Connections e depois clique em Save.
- Gerando os arquivos de mapeamento
Usando o MyGeneration vamos gerar os arquivos .hbm.xml e .cs. Por padrão, o software não vem com os arquivos que precisamos para gerar código para o NHibernate, por isso vamos baixa-los. Todo o processo é muito simples e pode ser realizado de dentro do próprio software.
Clique em File - New - Template Browser. A janela a baixo deverá aparecer:
Veja que, como eu falei anteriormente, não há nenhum arquivo relacionado ao NHibernate.
No Template Browser clique no terceiro botão (Online Template Library - o globo). Ao clicar sobre ele a Online Template Library irá aparecer. É através dela que vou fazer o download do template necessário para gerar os arquivos de mapeamento do NHibernate. Veja abaixo uma imagem da Online Template Library: