Utilizando atributos (Attributes) para criar framework objeto relacional em Delphi 2010 – Parte 1

Categories:DelphiTags: ,

Delphi iconDe 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.

Posts relacionados

17 Responses to Utilizando atributos (Attributes) para criar framework objeto relacional em Delphi 2010 – Parte 1

  1. Everson Clei says:

    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

  2. Ricardo says:

    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 !

  3. Cicero A. Billo says:

    Andreano, a parte 2 desse post já está no forno?

    []s

  4. Diego says:

    Estamos aguardando a Parte 2

  5. Andreano Lanusse says:

    Opa Diego,

    Eu sei :) , assim que sobrar um tempinho vou escrever a parte 2, desculpe a demora.

  6. Alex Luiz Jorge says:

    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

  7. Andreano Lanusse says:

    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

  8. Alex Luiz Jorge says:

    Andreano, valeu pela dica…

    Abraços

  9. Hermínio says:

    Assim o link da aquasoft está quebrado, aguardando continuação….

  10. Wescley Fey says:

    Hermínio,

    Você pode baixar o framework Aquasoft no seguinte endereço:

    http://www.aquasoft.com.br/home/downloads/PacotesAquasoft.zip

    Abraço.

  11. Hermínio says:

    Wescley Fey, muito obrigado, já baixei vou testar.

    [x]´z

  12. Wescley says:

    Instalei, correu tudo em ordem, agora só falta botar em prática, pelo que vi material sobre o framework é quase nulo, desinstalei….

  13. Samuel Deschamps says:

    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!

  14. Andreano Lanusse says:

    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.

  15. Samuel Deschamps says:

    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/

  16. Andreano Lanusse says:

    Wescley, a documentação do Delphi traz tudo sobre o Framework, além do código que é praticamente todo documentado.

  17. Fellipe says:

    O projeto persiphi é fechado? Tentei entrar e diz que: client doens’t have permission

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

*

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>