Esse artigo faz parte da revista Clube Delphi edição 52. Clique aqui para ler todos os artigos desta edição



Atenção: por essa edição ser muito antiga não há arquivo PDF para download. Os artigos dessa edição estão disponíveis somente através do formato HTML. 

 

Engenharia de Software

Parte 3 – Usando Bold para gerenciar os objetos e persistência

 

A aplicação para administração dos bens de um jogador de Banco Imobiliário, construída no artigo anterior (edição 51), funciona muito bem, satisfazendo a diversos requisitos de negócio. Entretanto, apresenta um problema sério: não salva o estado do jogo. Se o usuário fechar o formulário perderá tudo o que digitou até aquele momento.

Precisamos fazer alguma coisa para gravar as informações que, no caso da programação orientada por objetos estão contidas nos estados dos objetos (nos atributos). Entram em cena os esquemas de persistência.

 

Objetos persistentes

Os conhecedores da hierarquia da VCL ao lerem a palavra persistência, lembraram-se imediatamente da classe TPersistent, descendente direta de TObject. E eles estão corretos! É nessa classe que o mecanismo de gravação e leitura das propriedades dos objetos é definido, utilizando como veículo de transferência de dados um stream (fluxo), que pode ser um arquivo em disco (o DFM, por exemplo) ou uma área em memória.

Podemos gravar nossos objetos seguindo um esquema semelhante a esse usado pelo IDE do Delphi para persistir os formulários e seus componentes. Além desse, existem diversos outros esquemas, como:

  • Mapeamento Objeto-Relacional: armazenam-se os atributos dos objetos em banco de dados relacional. As classes são mapeadas para tabelas equivalentes. Os relacionamentos entre as classes são implementadas através de chaves estrangeiras, tabelas intermediárias, etc.
  • Bancos de dados OO: já existem diversos no mercado, como o Versant e o Cache. Ainda não conquistaram a confiança total dos usuários, mas espera-se um avanço considerável num futuro próximo. Alguns bancos relacionados tradicionais já começaram a oferecer funcionalidades similares;
  • Prevayler (Prevalence Layer): todos os objetos são mantidos na memória. Uma “foto” dos objetos é tirada regularmente e armazenada em um arquivo em disco. No intervalo entre as “fotos”, as alterações são gravadas em arquivos de log, permitindo que a imagem exata seja reconstruída caso a aplicação seja terminada indevidamente. Esse framework foi criado originalmente em Java (WWW.prevayler.org), mas já existe uma versão para .NET, denominada Bamboo (bbooprevalence.sourceforge.net);
  • Hibernate (hibernação): é um serviço de mapeamento-relacional e de pesquisa (query), disponível para Java (WWW.hibernate.org). Quem sabe teremos uma versão para .NET em breve? ...
    Quer ler esse conteúdo completo? Tenha acesso completo