Este é o site histórico da documentação 4D. As documentações estão sendo movidas progressivamente para developer.4d.com

Página Inicial

 
4D v19
Classes de dados

Classes de dados  


 

Classe de dados oferecem interfaces de objeto às tabelas de banco de dados. Todas as classes de dados em uma aplicação 4D estão disponíveis como uma propriedade de datastore ds. Por exemplo, considere a tabela abaixo na estrutura 4D.

A tabela [Company] está disponível automaticamente como uma classe de dados na datastore  ds. Pode escrever:

 C_OBJECT(compClass)
 compClass:=ds.Company

Esse código atribui à referência compClass a classe de dados  Company.

Um objeto de classe de dados pode conter:

  • atributos
  • atributos de relação

A classe de dados oferece uma abstração do banco de dados físico e permite manejar um modelo de dados conceitual. A classe de dados é o único meio de pesquisar a datastore. Uma pesquisa é feita de uma única classe de dados. Pesquisas são construídas ao redor de atributos e nomes de relação de atributos. Assim os atributos de relação são os meios para envolver diversas tabelas interligadas em uma pesquisa.

Atributos de classe de dados estão disponíveis como propriedades de suas classes respectivas. Por exemplo:

 nameAttribute:=ds.Company.name //referência ao atributo de classe
 revenuesAttribute:=ds.Company["revenues"] //rota alternativa

Este código atribui ao nameAttribute e revenuesAttribute faz referência aos atributos  name e revenues da classe Company. Essa sintaxe NÃO retorna valores contidos dentro do atributo, mas ao invés de retornar referências aos atributos em si. Para manejar valores, precisa ser através de Entidades.

Nota: Atributos de classe de dados são objetos que têm propriedades detalhados na seção  ORDA - DataClassAttribute.

Atributos de classe de dados existem em várias formas: armazenamento, relatedEntity, e relatedEntities. Atributos escalares (ou seja, que oferecem apenas um único valor) são compatíveis com o tipo de dados 4D padrão (longint, texto, objeto, etc)..

  • Um atributo de armazenamento é equivalente ao campo no banco de dados 4D e pode ser indexado. Valores atribuidos a um atributo de armazenamento são armazenados como parte da entidade quando é salvada. Quando um atributo de armazenamento é acessado, seus valores vêm diretamente da datastore. Atributos de armazenamento são os blocos de construção mais básicos de uma entidade e são definidos por nome e tipo de dados
  • Um atributo de relação oferece acesso a outras entidades. Atributos de relação podem resultar em uma única entidade (ou nenhuma entidade) ou em uma seleção de entidades (de 0 a N entidades). Atributos de relação são construidos com base nas relações "clássicas" na estrutura relacional para oferecer acesso direto para entidades relacionadas. Atributos de relação estão disponíveis diretamente em ORDA usando seus nomes..

Por exemplo, considere a estrutura de banco de dados parcial e as propriedades de relação:

Todos os atributos de armazenamento estarão disponíveis automaticamente:

  • no Project dataclass: "ID", "name", e "companyID"
  • no Company dataclass: "ID", "name", e "discount"

Além disso, os atributos de relação abaixo também estão automaticamente disponíveis:

  • no Project dataclass: o atributo theClient do tipo "relatedEntity"; há pelo menos uma Empresa para cada Projeto (o cliente)
  • em Company dataclass atributo: companyProject, do tipo "relatedEntities"; Para cada Empresa há qualquer número possível de Projetos relacionados.

Nota: A propriedade Manual ou Automática de relação de banco de dados não tem efeito em  ORDA.

Todos os atributos de classe de dados são expostos como propriedades na classe de dados:

Lembre que esses objetos descrevem atributos, mas não dá acesso aos dados. Leitura ou escritura de dados é feita através de  entity objects. Para saber mais sobre como usar atributos de relação em entidades, veja  Usar atributos de entidade.

Alguns métodos ORDA aceita referências de string como nomes de atributos e podem também ser aceitos referências de atributos. Por exemplos, considere abaixo:

 localPeople:=ds.Employee.query("zipCode = 95113")
 lastNames:=localPeople.toCollection("lastname")

Esse código define uma seleção de entidade de pessoas no CEP de código 95113. Depois produz uma coleção de sobrenomes. Ao invés de um valor de string representando um atributo, pode também usar uma referência de atributo como esta:

 lastNameAtt:=ds.Employee.lastname
 localPeople:=ds.Employee.query("zipCode = 95113")
 lastNames:=localPeople.toCollection(lastNameAtt)

O objeto de classe de dados em si mesmo não pode ser copiado como um objeto:

 $mydataclass:=OB Copy(ds.Employee) //retorna null

As propriedades de classe de dados são entretanto enumeráveis:

 ARRAY TEXT($prop;0)
 OB GET PROPERTY NAMES(ds.Employee;$prop)
  //$prop contém os nomes de todos os atributos de classe de dados

 
PROPRIEDADES 

Produto: 4D
Tema: ORDA

 
CONTEÚDO DA PÁGINA 
 
HISTÓRIA 

Criado por: 4D v17

 
ARTICLE USAGE

Manual de Desenho 4D ( 4D v19)