{"id":285,"date":"2009-09-02T20:14:36","date_gmt":"2009-09-02T12:14:36","guid":{"rendered":"http:\/\/www.andreanolanusse.com\/pt\/?p=285"},"modified":"2011-03-25T15:47:00","modified_gmt":"2011-03-25T07:47:00","slug":"utilizando-atributos-attributes-para-criar-framework-objeto-relacional-em-delphi-2010-parte-1","status":"publish","type":"post","link":"http:\/\/www.andreanolanusse.com\/pt\/utilizando-atributos-attributes-para-criar-framework-objeto-relacional-em-delphi-2010-parte-1\/","title":{"rendered":"Utilizando atributos (Attributes) para criar framework objeto relacional em Delphi 2010 \u2013 Parte 1"},"content":{"rendered":"<p><a rel=\"attachment wp-att-311\" href=\"http:\/\/www.andreanolanusse.com\/pt\/utilizando-atributos-attributes-para-criar-framework-objeto-relacional-em-delphi-2010-parte-1\/delphiloho\/\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-311\" style=\"border: 0pt none; margin: 4px;\" title=\"Delphi icon\" src=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2009\/09\/delphiloho.png\" alt=\"Delphi icon\" width=\"97\" height=\"97\" srcset=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2009\/09\/delphiloho.png 97w, http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2009\/09\/delphiloho-80x80.png 80w, http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2009\/09\/delphiloho-36x36.png 36w\" sizes=\"(max-width: 97px) 100vw, 97px\" \/><\/a>De todas as novidades trazidas pelo Delphi 2010, sem d\u00favida o suporte a atributo (Attributes) \u00e9 uma das que mais gosto. Para aqueles que j\u00e1 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.<\/p>\n<p>Em resumo atributos nos permite definir caracter\u00edsticas para classes e seus respectivos elementos, existem v\u00e1rios exemplos que mostram a utilidade dos atributos. O melhor exemplo onde podemos utilizar atributos \u00e9 a cria\u00e7\u00e3o de framework objeto relacional (O\/R Mapping), assim sendo come\u00e7o hoje uma s\u00e9rie de post explicando atributos e utilizando OR\/Mapping como exemplo, al\u00e9m disso vamos ver dbExpress Framework que ser\u00e1 parte da solu\u00e7\u00e3o.<\/p>\n<p>Atributos obrigatoriamente s\u00e3o definidos atrav\u00e9s de classes, estas devem herdar de TCustomAttribute a classe base para cria\u00e7\u00e3o dos mesmos. Abaixo a classe TableAttribute que ser\u00e1 utilizada para mapear as classes da aplica\u00e7\u00e3o com o banco de dados, a propriedade TableName define o nome da tabela.<\/p>\n<pre class=\"brush: delphi\">TableAttribute = class(TCustomAttribute)\r\nprivate\r\n  FTableName: string;\r\n\r\npublic\r\n  { TRttiType can be used as a parameter type; TypeInfo() supplies the argument. }\r\n  property TableName: string read FTableName;\r\n  constructor Create(ATableName: string); overload;\r\nend;\r\n\r\nimplementation\r\n\r\nconstructor TableAttribute.Create(ATableName: string);\r\nbegin\r\n  FTableName := ATableName;\r\nend;<\/pre>\n<p>Definido o atributo para mapeamento das tabelas, basta agora voc\u00ea utiliz\u00e1-lo nas suas classes, abaixo um exemplo onde a classe TCliente est\u00e1 mapeando a tabela CLIENTE.<\/p>\n<pre class=\"brush: delphi\">[TableAttribute('CLIENTE')]\r\nTCliente = class\r\npublic\r\n  { public declarations }\r\n  property Nome : String read FNome write FNome;\r\n  property Endereco : String read FEndereco write FEndereco;\r\nend;<\/pre>\n<p>Esse foi o primeiro post, no pr\u00f3ximo vamos criar atributos para mapear propriedades com os campos das tabelas.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>De todas as novidades trazidas pelo Delphi 2010, sem d\u00favida o suporte a atributo (Attributes) \u00e9 uma das que mais gosto. Para aqueles que j\u00e1 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. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_s2mail":"","footnotes":""},"categories":[102],"tags":[181,75],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v16.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Utilizando atributos (Attributes) para criar framework objeto relacional em Delphi 2010 \u2013 Parte 1 | Andreano Lanusse | Tecnologia e Desenvolvimento de Software<\/title>\n<meta name=\"description\" content=\"De todas as novidades trazidas pelo Delphi 2010, sem d\u00favida o suporte a atributo (Attributes) \u00e9 uma das que mais gosto. Para aqueles que j\u00e1 conhecem este\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/www.andreanolanusse.com\/pt\/utilizando-atributos-attributes-para-criar-framework-objeto-relacional-em-delphi-2010-parte-1\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Utilizando atributos (Attributes) para criar framework objeto relacional em Delphi 2010 \u2013 Parte 1 | Andreano Lanusse | Tecnologia e Desenvolvimento de Software\" \/>\n<meta property=\"og:description\" content=\"De todas as novidades trazidas pelo Delphi 2010, sem d\u00favida o suporte a atributo (Attributes) \u00e9 uma das que mais gosto. Para aqueles que j\u00e1 conhecem este\" \/>\n<meta property=\"og:url\" content=\"http:\/\/www.andreanolanusse.com\/pt\/utilizando-atributos-attributes-para-criar-framework-objeto-relacional-em-delphi-2010-parte-1\/\" \/>\n<meta property=\"og:site_name\" content=\"Andreano Lanusse | Tecnologia e Desenvolvimento de Software\" \/>\n<meta property=\"article:published_time\" content=\"2009-09-02T12:14:36+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2011-03-25T07:47:00+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2009\/09\/delphiloho.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@andreanolanusse\" \/>\n<meta name=\"twitter:site\" content=\"@andreanolanusse\" \/>\n<meta name=\"twitter:label1\" content=\"Est. tempo de leitura\">\n\t<meta name=\"twitter:data1\" content=\"1 minuto\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#website\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/\",\"name\":\"Andreano Lanusse | Tecnologia e Desenvolvimento de Software\",\"description\":\"Andreano Lanusse blog - artigos, tutoriais e v&iacute;deos sobre tecnologia, desenvolvimento de software (Delphi XE4, C#, PHP, .NET) e t&eacute;cnicas de programa&ccedil;&atilde;o\",\"publisher\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"http:\/\/www.andreanolanusse.com\/pt\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/utilizando-atributos-attributes-para-criar-framework-objeto-relacional-em-delphi-2010-parte-1\/#primaryimage\",\"inLanguage\":\"pt-BR\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2009\/09\/delphiloho.png\",\"contentUrl\":\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2009\/09\/delphiloho.png\",\"width\":97,\"height\":97},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/utilizando-atributos-attributes-para-criar-framework-objeto-relacional-em-delphi-2010-parte-1\/#webpage\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/utilizando-atributos-attributes-para-criar-framework-objeto-relacional-em-delphi-2010-parte-1\/\",\"name\":\"Utilizando atributos (Attributes) para criar framework objeto relacional em Delphi 2010 \\u2013 Parte 1 | Andreano Lanusse | Tecnologia e Desenvolvimento de Software\",\"isPartOf\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/utilizando-atributos-attributes-para-criar-framework-objeto-relacional-em-delphi-2010-parte-1\/#primaryimage\"},\"datePublished\":\"2009-09-02T12:14:36+00:00\",\"dateModified\":\"2011-03-25T07:47:00+00:00\",\"description\":\"De todas as novidades trazidas pelo Delphi 2010, sem d\\u00favida o suporte a atributo (Attributes) \\u00e9 uma das que mais gosto. Para aqueles que j\\u00e1 conhecem este\",\"breadcrumb\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/utilizando-atributos-attributes-para-criar-framework-objeto-relacional-em-delphi-2010-parte-1\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/www.andreanolanusse.com\/pt\/utilizando-atributos-attributes-para-criar-framework-objeto-relacional-em-delphi-2010-parte-1\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/utilizando-atributos-attributes-para-criar-framework-objeto-relacional-em-delphi-2010-parte-1\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/\",\"name\":\"In\\u00edcio\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/utilizando-atributos-attributes-para-criar-framework-objeto-relacional-em-delphi-2010-parte-1\/#webpage\"}}]},{\"@type\":\"Article\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/utilizando-atributos-attributes-para-criar-framework-objeto-relacional-em-delphi-2010-parte-1\/#article\",\"isPartOf\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/utilizando-atributos-attributes-para-criar-framework-objeto-relacional-em-delphi-2010-parte-1\/#webpage\"},\"author\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"headline\":\"Utilizando atributos (Attributes) para criar framework objeto relacional em Delphi 2010 \\u2013 Parte 1\",\"datePublished\":\"2009-09-02T12:14:36+00:00\",\"dateModified\":\"2011-03-25T07:47:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/utilizando-atributos-attributes-para-criar-framework-objeto-relacional-em-delphi-2010-parte-1\/#webpage\"},\"commentCount\":18,\"publisher\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"image\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/utilizando-atributos-attributes-para-criar-framework-objeto-relacional-em-delphi-2010-parte-1\/#primaryimage\"},\"keywords\":[\"Delphi\",\"RTL\"],\"articleSection\":[\"Delphi\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\/\/www.andreanolanusse.com\/pt\/utilizando-atributos-attributes-para-criar-framework-objeto-relacional-em-delphi-2010-parte-1\/#respond\"]}]},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\",\"name\":\"Andreano Lanusse\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#personlogo\",\"inLanguage\":\"pt-BR\",\"url\":\"http:\/\/0.gravatar.com\/avatar\/6a9c6f73c7c480fb826c7303288abfd3?s=96&d=mm&r=g\",\"contentUrl\":\"http:\/\/0.gravatar.com\/avatar\/6a9c6f73c7c480fb826c7303288abfd3?s=96&d=mm&r=g\",\"caption\":\"Andreano Lanusse\"},\"logo\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#personlogo\"},\"sameAs\":[\"https:\/\/twitter.com\/andreanolanusse\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts\/285"}],"collection":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/comments?post=285"}],"version-history":[{"count":0,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts\/285\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/media?parent=285"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/categories?post=285"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/tags?post=285"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}