Yamapper: conceitos
Em Yamapper | 10/02/2011 14:30
O que é Yamapper?
Yamapper (Yet Another Database Mapper) é um mapeador objeto-relacional inspirado nos ORMs NHibernate, mybatis (antigo ibatis.net) e Subsonic, permitindo mapeamento de tabelas e views tanto a partir de Attributes quanto de arquivos XML externos, possuindo ótima performance e compatibilidade nativa com os bancos de dados SQL Server, Oracle e MySQL.
Através de sua simplicidade de uso e facilidades disponibilizadas tanto pelos seus métodos quanto pelo uso do My Generation para geração das classes de mapeamento, além do suporte a lazy loading, o Yamapper se apresenta como uma opção de ORM para projetos na plataforma .NET tanto de pequeno, médio ou grande porte.
Arquitetura recomenda
A arquitetura recomenda para utilização do Yamapper, apelidada de Model Driven Architecture, separa a camada de apresentação de todas as atividades do modelo, garantindo baixo acoplamento entre seus objetos e favorecendo o uso de injeção de dependência.
Presentation
Camada de apresentação, responsável pela geração da interface com o usuário.
- WEB: interface web, executada em navegadores;
- Desktop: interface em desktops Windows;
- Web Service: interface de serviços acessada via POST, SOAP, REST, etc.;
- Util: objetos de apoio na geração da interface e arquivos de configuração.
Model
Camada de modelo, responsável pela interpretação de regras de negócio e acesso a fontes de dados.
- Facade: fachada de acesso às outras camadas, utilizada para abstrair o acesso a dados e interpretação de regras de negócio.
- Public: fachadas públicas, as quais são acessadas pela camada de apresentação;
- Internal: fachadas internas, acessíveis internamente apenas pelas fachadas públicas. São utilizadas para agrupar procedimentos similares que não necessitam ser expostos à camada de apresentação;
- Exceptions: exceções de uso da fachada.
- Domain: camada contendo os procedimentos de negócio da aplicação.
- Business Objects (Biz): objetos de negócio, responsáveis por acessar as fontes de dados e processá-los;
- Supertypes: classes base utilizadas pelos objetos de negócio.
- Data: camada de acesso a fontes de dados.
- Data Access Objetcs (Dao): objetos de acesso a fontes de dados, sejam estes bancos de dados, web services ou arquivos texto;
- Supertypes: classes base utilizadas pelos objetos de dados.
- Core: núcleo da camada de modelo.
- Data Interfaces: interfaces utilizadas como contrato entre as camadas de negócios e de dados, assegurando que ambos os grupos de objetos contenham as mesmas instruções;
- Database Entities: entidades mapeadas do banco de dados;
- TransferObjects: objetos de transferência de dados, utilizados para tráfego de dados diversos que não necessariamente são uma entidade ou visão;
- Views: visões de fontes de dados, sendo objetos somente leitura;
- Util: objetos de apoio da camada de modelo.
Supertypes
Os supertypes são utilizados para agrupar instruções similares entre objetos de uma mesma camada. Por padrão, o Yamapper recomenda o uso de alguns supertypes, os quais podem ser gerados automaticamente através do script My Generation que acompanha os binários do componente.
Na camada Domain, os supertypes recomendados são:
- BizBase: representa características comuns entre todos os objetos de negócio, como a necessidade de um objeto de acesso a dados.
Na camada Data, os supertypers recomendados são:
- DaoBase: representa características comuns entre todos os objetos de acesso a dados.
- CrudDaoBase: representa características comuns para objetos de acesso a dados que realização operações de CRUD (Create/Read/Update/Delete);
- ViewDaoBase: representa características comuns para objetos de acesso a dados somente leitura, contendo apenas operações de obtenção de dados.
Arquivos de configuração
O Yamapper possui dois tipos de arquivos de configuração que permitem ajustar tanto o comportamento do componente quanto das classes mapeadas:
- Yamapper.config: representa as configurações do Yamapper, permitindo a declaração de strings de conexão com o banco de dados e ajuste de outros detalhes do componente. Mais detalhes em arquivo de configuração;
- *.cmf (Class Mapping File): representa o mapeamento de uma classe em relação a uma tabela do banco de dados. Mais detalhes em arquivo de mapeamento.
Passos para o mapeamento
Para realização do mapeamento de uma tabela para acesso através do Yamapper, alguns passos devem ser seguidos:
- Criação das tabelas no banco de dados;
- Criação das classes em .NET representando as tabelas;
- Criação de mapeamentos externos ou utilização de atributos diretamente nas classes que representam as tabelas para identificar a relação entre campos da tabela e propriedades da classe;
- Utilização do Yamapper para acesso aos dados.
Para simplificar esses passos, o script Intentor.Yamapper Class Generator.csgen do My Generation é enviado juntamente com os binários do componente para facilitar a criação tanto das classes quanto de diversos objetos de apoio utilizados na arquitetura recomendada para uso do Yamapper.
Ao infinito e além
Caso tenha alguma dúvida, curiosidade, trauma ou angústia sobre o projeto, ou apenas deseja elogiá-lo, utilize o espaço de comentários mais abaixo para entrar em contato.