De que se trata o artigo

Este artigo aborda o emprego de ORM (Mapeamento Objeto Relacional), um recurso que possibilita a gravação ou conversão de objetos para registros em um banco de dados, utilizando o Framework da TMS Software, Aurelius, para o Delphi XE 2, demonstrando um simples exemplo de como empregá-lo no desenvolvimento de aplicações Orientadas a Objeto.


Em que situação o tema é útil

Apresentar uma alternativa para o desenvolvedor que deseja elaborar aplicações que utilizem objetos para a manipulação das informações presentes em um banco de dados, obtendo inúmeras vantagens ao adotar este recurso em seus projetos.

ORM com Aurelius

Atualmente, o conceito de Orientação a Objetos é extensamente aplicado no desenvolvimento de Software, pois apresenta inúmeras vantagens, além de que muitas linguagens de programação oferecem suporte ao mesmo. Contudo, ao integrar um sistema OO com um banco de dados podem surgir algumas questões, uma vez que funcionam de formas diferentes. É neste momento que a tecnologia ORM deve ser empregada, com o intuito de auxiliar o desenvolvedor na persistência dos seus objetos para o banco ou meio físico, aumentando assim a produtividade e tornando o sistema facilmente legível e portável. Este artigo tem o objetivo de demonstrar o recente Framework Aurelius para o emprego de ORM com o Delphi XE 2, apresentando um exemplo prático de como utilizá-lo no desenvolvimento de uma simples aplicação com o banco de dados SQLite e duas tabelas, mas que pode ser elaborada com qualquer outro banco suportado pelo Aurelius.

A Orientação a Objetos trouxe inúmeros benefícios para o desenvolvimento de Softwares cada vez mais robustos, flexíveis, escaláveis, entre outras características, provendo a arquitetura ideal para ser empregada na atualidade quando o assunto é planejamento de sistemas. Entretanto, durante o projeto de uma aplicação baseada em OO podem ocorrer alguns contratempos, uma vez que nem todos os recursos necessários para o funcionamento adequado do Software oferecem total suporte a este conceito ou trabalham de forma diferente, como é o caso de grande parte dos SGBDs da atualidade, que são baseados no popular e tradicional modelo relacional. Neste modelo, os dados são organizados através das relações, onde existem tabelas constituídas basicamente por campos e registros, empregando chave primária e estrangeira. Diante deste contexto, existe a necessidade de um recurso que permita que os objetos derivados das classes que representam as entidades possam ser “convertidos” e gravados em um banco de dados ou um meio físico, sendo tal recurso denominado ORM (Object-Relational Mapping – Mapeamento Objeto Relacional). Uma vantagem importante ao adotar ORM nos projetos é o aumento da produtividade, já que os códigos podem ser empregados diretamente em objetos, dispensando muitas vezes a utilização de complexas instruções SQL. Outra vantagem está relacionada à manutenção da aplicação que se torna mais fácil, uma vez que a lógica e as regras de negócio ficam mais evidentes quando objetos são empregados e a camada de banco de dados é abstraída. A portabilidade também é outro fator que deve ser levado em consideração, pois ao utilizar um bom Framework, o desenvolvedor pode migrar sua aplicação de banco de dados de uma forma simplificada, oferecendo ao seu cliente a possibilidade de escolher qual SGBD deseja adotar.

Um conceito muito importante para o emprego de ORM é a persistência de objetos. A persistência é o recurso responsável por possibilitar que as informações dos objetos presentes na memória volátil possam ser gravadas posteriormente em dispositivos de armazenamento permanente, utilizando um banco de dados, documentos XML (Extensible Markup Language), entre outros.

Quanto ao Delphi, após a implementação de recursos como Generics, que por sua vez permitem a utilização de tipos genéricos, listas fortemente tipadas, entre outros, surgiram diversas ferramentas que adicionaram novas possibilidades no desenvolvimento de aplicações. Dentre as tecnologias que nasceram recentemente, destacam-se os Frameworks que possibilitam o emprego de ORM, como é o caso do DORM (Delphi ORM) e em especial o Aurelius, que é uma ferramenta desenvolvida pela TMS e que oferece suporte completo a manipulação de dados, polimorfismo, consultas complexas, herança, dentre outros recursos. Contudo, este Framework é proprietário, mas possui um preço de licença acessível (195 €) e uma versão Trial que vem com todas as funcionalidades e pode ser facilmente obtida através do site da TMS (ver seção links), onde o desenvolvedor pode se familiarizar e efetuar todos os testes desejados com fins não comerciais.

O Framework Aurelius

O Aurelius é um importante recurso da atualidade para o emprego de ORM no Delphi XE 2 e também para outras versões. Ele permite a integração com diversos bancos de dados importantes, tais como o SQLite, Firebird, MySQL, Interbase, Oracle, SQL Server, PostgreSQL entre outros, suportando vários componentes de acesso como o DBExpress, IBX e ADO por exemplo, possuindo também acesso nativo para conexões com o SQLite. Este Framework também é multiplataforma, podendo ser empregado na elaboração de aplicações para Windows 32/64 bits e Mac OS, utilizando os recursos da VCL (Visual Component Library) para o Windows ou o novo ambiente de desenvolvimento do XE 2, o FireMonkey.

Com a utilização deste Framework, o desenvolvedor pode facilmente efetuar a gravação, atualização e carregamento das informações dos objetos com o banco de dados, criando consultas com uma API (Application Programming Interface) baseada em expressões, com suporte a agrupamentos, projeções, condicionais, dentre outros recursos. Além disto, ele permite o mapeamento automático das classes elaboradas no Delphi através de atributos, aumentando assim a produtividade no emprego de ORM. Este pode ser facilmente integrado ao Delphi XE 2, uma vez que basta obtê-lo através do site da empresa e efetuar sua instalação através de um executável, sendo também bem documentado, e, após a conclusão deste processo, basta adicioná-lo ao ambiente RAD através do menu Component>Install Packages.

Como todo componente de terceiros, o Aurelius também possui suas próprias características, classes e funções para que o mesmo possa ser utilizado. A Tabela 1 apresenta os principais componentes do Framework Aurelius para implementação de ORM no projeto.

...

Componente

Descrição

IDBConnection

Uma Interface que é utilizada para representar a conexão com um banco de dados através do Aurelius, oferecendo a base para as operações.

Quer ler esse conteúdo completo? Tenha acesso completo