Existem uma diversidade de ferramentas visuais que geram e/ou
automaticamente criam banco de dados através de linguagem de definição de
dados (DDL) SQL. Entre essas ferramentas podemos citar Visio, ERWin,
DBDesiner entre outras. No entanto as rotinas de manipulação de dados também
tomam muito tempo do desenvolvedor.
 
Indignado com isso ansiei por desenvolver uma ferramenta que lesse a
estrutura de um banco de dados e automaticamente criasse as rotinas de
manipulação de dados (DML) SQL. Entre tanto ouvi falar
sobre Object Relational Mapping (O/R M) e descobri ferramentas que
facilitaram meu trabalho de modo que hoje não é mais necessário digitar os
famosos Select, Insert, Delete e Update. Você já pensou o tempo que podemos
economizar sem termos que codificar essas rotinas tão repetitivas?
 
O que de fato é O/R M?
De modo geral, O/R M é um conceito de criar mapeamento entre tabelas, seus
campos e classes orientadas a objetos para que possamos representar a
linha de uma tabela através de uma classe em um programa orientado a
objetos.

Como funciona O/R M?
Para cada tabela em um banco de dados é criado uma classe com atributos que
representará essa tabela(Entidade), de modo que um framework de O/R M
contendo toda lógica de persistência possa manipular os dados com seus
métodos e atributos.
 
Exemplo:

Para inserir uma nova categoria e mais alguns produtos desta categoria no
banco de dados northwind, apenas teríamos que usar o seguinte código, quando
utilizado um objeto de uma biblioteca O/R M.


//Cria uma categoria
Categories ObjCategory = new Categories();
ObjCategory.CategoryName = "Software";
ObjCategory.Description = "Programas de Computador";
  
// Cria um produto
Products ObjProduct = new Products();
ObjProduct.ProductName = "SQL Server Express Edition";
ObjProduct.UnitPrice = 0.0;
ObjProduct.Discontinued = 0;
 

//Adiciona produto a categoria
ObjCategory.ProductsCollection.Add(ObjProduct);


//Cria um produto
Products ObjProduct = new Products();
ObjProduct.ProductName = "Visual Basic 2005 Express Edition";
ObjProduct.UnitPrice = 0.0;
ObjProduct.Discontinued = 0;

 

//Adiciona produto a categoria
ObjCategory.ProductsCollection.Add(ObjProduct);
 
//Salva a categoria e seus produtos ao banco de dados
Product.Save();


Note: Ao utilizar um objeto de uma biblioteca O/R M não é necessário digitar os
comandos de DML para manipulação de dados no banco de dados, o único
trabalho é atribuir os valores das propriedades - que são do mesmo tipo que
seus respectivos campos no banco de dados - e depois chamar o método Save
que já contem toda lógica do framework de O/R M para persistência.
 
Preciso criar a biblioteca de O/R M?
Sim, precisa! Mas não se assuste! Isso não é de forma "braçal", existem

ferramentas que lêem a estrutura do banco de dados e são capazes de gerar
essas bibliotecas apenas para serem utilizadas pelo seu programa.
 
Quais ferramentas de O/R M existentes?
Apesar de pouco se ouvir falar em O/R M, isso não é novo no mundo java e
existem uma série de ferramentas para essa plataforma. No entanto para
plataforma .Net, isso é relativamente novo, mas possuímos nhibernate,
ORM.NET, NDO, Vanatec, llblgen e outras.

 

Conclusão

O/R M já é muito utilizado, sua eficácia e agilidade no desenvolvimento parece muito promissor e com certeza contribui para redução do tempo de codificação.

 

Links:

http://nhibernate.sourceforge.net/

http://sourceforge.net/projects/orm-net/

http://www.netdataobjects.de/Portal/Default.aspx

http://www.vanatec.com

http://www.llblgen.com/

 

No próximo artigo veremos como criar nosso primeiro programa fazendo uso de O/RM usando llblgen.

 

Um abraço e até a próxima,

Rubens Arandas

rarandas@hotmail.com