Atenção: esse artigo tem um vídeo complementar. Clique e assista!

Do que trata o artigo

Mostrar como utilizar o Framework tiOPF para realização de mapeamento objeto relacional e como utilizá-lo no desenvolvimento de um sistema orientado a objetos, ilustrando como persistir esses objetos de negócio.


Para que serve

O tiOPF é um Framework que realiza a persistência de objetos, oferecendo assim meios para inserir, recuperar, localizar e excluir de um banco de dados (seja ele relacional ou arquivo texto) objetos de negócio implementados em Delphi.


Em que situação o tema é útil

No desenvolvimento orientado a objetos em Delphi, é muito comum que os desenvolvedores criem suas próprias soluções para esse requisito. Mas na grande maioria das vezes essas não são reutilizáveis e nem apresentam recursos suficientes. O tiOPF é um Framework pronto para essas situações.

Resumo do DevMan

Com certeza as maiores dificuldades enfrentadas por um desenvolvedor Delphi que escolhe aplicar a orientação a objetos em seu sistema estão concentradas nas camadas de persistência e apresentação, fazendo com que em muitos dos casos, um desânimo cresça e o interesse pela orientação a objetos desapareça, o que leva a sistemas Delphi não terem a qualidade de plataformas como .NET e Java, que pregam a OO em praticamente qualquer tipo de aplicação. Esse é um mito que vamos derrubar hoje. Conheça aqui o tiOPF e veja como seus recursos podem agilizar e facilitar o uso de objetos em suas regras de negócio. Vamos desenvolver um exemplo prático que irá expor os conceitos básicos que permitirão o uso imediato da ferramenta no seu dia a dia.

Boa parte dos desenvolvedores Delphi se entusiasma com a teoria que envolve a orientação a objetos e toda sua boa prática, podendo citar dentre elas os Design Patterns. Começam a modelar seus sistemas, suas regras de negócio, porém, quando vão construir sua interface de usuário já se deparam com uma dificuldade muito comum. Como ligar os dados dos objetos aos controles visuais e vice versa? Depois, outra dúvida aparece, como vou salvar meus objetos? Minha classe irá se tornar uma tabela? Como manter o relacionamento que fiz entre a classe TNota e TItensNota?

Tentando solucionar essas dificuldades muitos criam soluções engenhosas, mas pouco flexíveis. Neste artigo quero introduzir o Framework tiOPF (TechInsight Object Persistence Framework), que é responsável pela persistência de objetos. Além disso, ele oferece também meios de se criar interfaces de usuário de forma bem produtiva.

Vamos construir um pequeno exemplo que permita a manutenção de uma lista de contatos, contendo um nome, e-mail e uma lista de telefones. Veremos como será feito o mapeamento objeto relacional e como o tiOPF lida com o relacionamento entre um contato e seus possíveis telefones.

Nota do DevMan

A persistência de objetos é ação de poder salvar os dados dos objetos que estão em memória para meios não voláteis, como, por exemplo, um banco de dados relacional, arquivos XML ou até mesmo arquivos texto comuns.

Nota do DevMan

Mapeamento Objeto Relacional: Os dados dos objetos devem ser salvos para um meio físico, que na sua grande maioria é um banco de dados relacional. Um Framework de persistência deve oferecer meios para que seja indicado onde determinada classe será salva, como suas propriedades serão traduzidas, como seus relacionamentos serão tratados. Isso é fazer mapeamento. Geralmente temos uma relatividade entre classe e tabela, onde uma classe será uma tabela e suas propriedades se tornarão campos. Mas nem sempre é assim. Às vezes é possível ter duas classes, por exemplo, Pessoa e Endereço, e a classe a ser transformada em tabela seja apenas Pessoa. Endereço por suas vez se tornaria apenas campos da tabela Pessoa. Isso é chamado de granularidade, que pode ser diferente entre os dois ambientes. Essa diferença é chamada de impedância objeto relacional e, cabe a um bom OPF (framework de mapeamento relacional) diminuir essas diferenças.

O framework tiOPF

O tiOPF é um framework que realiza o mapeamento objeto relacional para nós, assumindo a responsabilidade de persistir objetos de negócio em tabelas de um banco de dados. Quando desenvolvemos um sistema aplicando a orientação a objetos nos deparamos com um problema chamado impendância objeto/relacional (que comentei anteriormente). Resumidamente esse problema representa a diferença existente entre esses dois mundos.

Para exemplificar a situação, imagine que temos duas classes, TPessoa e TEndereco. Elas são relacionadas uma com a outra, ou seja, um objeto TPessoa possui um objeto TEndereco. Agora pense em como essas informações poderiam ser salvas em um banco de dados relacional.

Poderíamos ter uma tabela PESSOA e outra ENDERECO ligadas por uma chave estrangeira e ainda poderíamos ter apenas uma tabela PESSOA que conteria todos os campos necessários. Uma ferramenta ORM cuida de tudo isso para nós, permitindo que mantenhamos nosso foco no que fazemos de melhor, desenvolver realmente o sistema.

O tiOPF é um framework muito completo e bem flexível. Desenvolvido por uma empresa australiana, é muito utilizado naquela região. Altamente maduro e confiável, pois está em produção desde o Delphi 5. Oferece seus próprios controles visuais, que agilizam o desenvolvimento de interfaces com componentes especializados, que tratam desde a validação de um objeto até a visualizações complexas como ListView que atua como um Grid, pronto para manutenção de objetos. Permite que os objetos sejam salvos em diversos bancos relacionais e até mesmo em arquivos XML. Também oferece mecanismos para a criação do banco de dados via código. Com ele também é possível desenvolver aplicativos três camadas, onde objetos irão trafegar entre servidor e cliente. A exigência aqui é que suas classes de negócio herdem de TtiObject, classe base do framework. E claro, você poderá utilizar seus controles Data-Aware mesmo utilizando o tiOPF pois ele disponibiliza um Dataset especial, o TTiDataset que torna os objetos plugáveis nas interfaces DataSet (essa será a técnica usada no artigo). A versão 3 oferece suporte ao Delphi 2010.

Baixando o tiOPF

...
Quer ler esse conteúdo completo? Tenha acesso completo