Utilizando atributos (Attributes) para criar framework objeto relacional em Delphi 2010 – Parte 1
De todas as novidades trazidas pelo Delphi 2010, sem dúvida o suporte a atributo (Attributes) é uma das que mais gosto. Para aqueles que já conhecem este recursos em outras linguagens como C# e Java, sabem que Attributes traz um mundo de possibilidades e associado com as novas funcionalidades da RTTI faz o casamento perfeito.
Em resumo atributos nos permite definir características para classes e seus respectivos elementos, existem vários exemplos que mostram a utilidade dos atributos. O melhor exemplo onde podemos utilizar atributos é a criação de framework objeto relacional (O/R Mapping), assim sendo começo hoje uma série de post explicando atributos e utilizando OR/Mapping como exemplo, além disso vamos ver dbExpress Framework que será parte da solução.
Atributos obrigatoriamente são definidos através de classes, estas devem herdar de TCustomAttribute a classe base para criação dos mesmos. Abaixo a classe TableAttribute que será utilizada para mapear as classes da aplicação com o banco de dados, a propriedade TableName define o nome da tabela.
TableAttribute = class(TCustomAttribute) private FTableName: string; public { TRttiType can be used as a parameter type; TypeInfo() supplies the argument. } property TableName: string read FTableName; constructor Create(ATableName: string); overload; end; implementation constructor TableAttribute.Create(ATableName: string); begin FTableName := ATableName; end;
Definido o atributo para mapeamento das tabelas, basta agora você utilizá-lo nas suas classes, abaixo um exemplo onde a classe TCliente está mapeando a tabela CLIENTE.
[TableAttribute('CLIENTE')] TCliente = class public { public declarations } property Nome : String read FNome write FNome; property Endereco : String read FEndereco write FEndereco; end;
Esse foi o primeiro post, no próximo vamos criar atributos para mapear propriedades com os campos das tabelas.
Andreano…
Excelente novidade que você esta trazendo em primeira mão para nós, onde este novo suporte que o D2010 traz irá facilitar a vida de muita gente…
Parabéns… e aguardamos os próximos posts sobre o assunto.
[],s
Andreano, bacana esse topico.. estou querendo implementar um mini framework para persistencia de dados e acho que isso pode me ajudar… no aguardo da continuação desse post..
abraço !
Andreano, a parte 2 desse post já está no forno?
[]s
Estamos aguardando a Parte 2
Opa Diego,
Eu sei :), assim que sobrar um tempinho vou escrever a parte 2, desculpe a demora.
Andreano, boa tarde!
Eu estou tentando desenvolver um Framework e o seu post é bem o que eu preciso. Você tem o resto do código desse post?
Abraços
Oi Alex,
Ainda não, estou na pendência de escrever a Parte 2, mas você pode ver outros post sobre RTTI porque é o caminho que vou usar, além disso já existe outros frameworks no mercado pra você olhar também. A Aquasoft acabou de disponibilizar um vai no site dele aquasoft.com
Andreano, valeu pela dica…
Abraços
Assim o link da aquasoft está quebrado, aguardando continuação….
Hermínio,
Você pode baixar o framework Aquasoft no seguinte endereço:
http://www.aquasoft.com.br/home/downloads/PacotesAquasoft.zip
Abraço.
Wescley Fey, muito obrigado, já baixei vou testar.
[x]´z
Instalei, correu tudo em ordem, agora só falta botar em prática, pelo que vi material sobre o framework é quase nulo, desinstalei….
Wescley, a documentação do Delphi traz tudo sobre o Framework, além do código que é praticamente todo documentado.
Olá Andreano,
Apenas uma correção para o seu post:
– Como você definiu o nome da classe como sendo TableAttribute, ao utilizá-lo na entidade TCliente, deve ser usado como TableAttribute e não Table.
Ficaria assim:
[TableAttribute(‘CLIENTE’)]
TCliente = class
public
property Nome : String read FNome write FNome;
property Endereco : String read FEndereco write FEndereco;
end;
Eu desenvolvi um framework de mapeamento objeto relacional que faz uso deste recurso e da nova API do RTTI. Mais informações no meu blog.
Abraço!
Oi Samuel, já está corrigido, obrigado.
Legal sobre o framework, agora é só começar a usar o que você nas suas aplicações 🙂 e se quiser compartilhar com a comunidades se for do interesse.
De nada. 😉
Eu aloquei o projeto no GoogleCode, estou montando uma equipe para trabalharmos nele. Tudo indica que o framework tem um grande futuro pela frente.
Quem quiser olhar e/ou contribuir, sinta-se à vontade.
Link: http://www.code.google.com/p/persiphi/
O projeto persiphi é fechado? Tentei entrar e diz que: client doens’t have permission
Boa tarde!
Teve as outras parte do tutorial?
Atenciosamente,