Vous êtes sur le site Web historique de la documentation de 4D. Les documentations sont progressivement déplacées vers developer.4d.com

Accueil

 
4D v19
Dataclasses

Dataclasses  


 

Les Dataclasses fournissent des interfaces objet aux tables de la base de données. Toutes les dataclasses d'une application 4D sont disponibles en tant que propriété du datastore ds. Par exemple, considérez la table suivante dans une structure 4D :

La table [Company] est automatiquement disponible en tant que dataclass dans le datastore ds. Vous pouvez écrire :

 C_OBJECT(compClass)
 compClass:=ds.Company

Ce code attribue à compClass une référence à la dataclass Company.

Un objet dataclass peut contenir :

  • des attributs
  • des attributs relationnels

La dataclass offre une abstraction de la base de données physique et permet de gérer un modèle de données conceptuel. La dataclass est le seul moyen d'interroger le datastore. Une requête est effectuée à partir d'une seule dataclass. Les requêtes sont construites autour des attributs et des noms d'attributs relationnels des dataclasses. Les attributs relationnels sont ainsi les moyens d'impliquer plusieurs tables liées dans une requête.

Les attributs de la Dataclass sont disponibles en tant que propriétés de leurs classes respectives. Par exemple :

 nameAttribute:=ds.Company.name //référence à l'attribut de la classe
 revenuesAttribute:=ds.Company["revenues"] //autre manière

Ce code attribue à nameAttribute et revenuesAttribute des références aux attributs name et revenues de la class Company. Cette syntaxe ne renvoie PAS les valeurs contenues dans l'attribut, mais renvoie les références aux attributs eux-mêmes. Pour gérer les valeurs, vous devez passer par Entités.

Note : Les attributs de la Dataclass sont des objets avec des propriétés. Celles-ci sont détaillées dans la section ORDA - DataClassAttribute.

Les attributs de la Dataclass sont de plusieurs types : storage, relatedEntity et relatedEntities. Les attributs scalaires (c'est-à-dire qui ne fournissent qu'une seule valeur) prennent en charge le type de données standard (Entier long, texte, objet, etc.).

  • Un attribut de stockage  (storage) est équivalent à un champ dans la base de données 4D et peut être indexé. Les valeurs affectées à un attribut de stockage sont stockées en tant que partie de l'entité lors de son enregistrement. Lorsqu'on accède à un attribut de stockage, sa valeur provient directement du datastore. Les attributs de stockage sont le bloc de construction le plus élémentaire d'une entité et sont définis par un nom et un type de données.
  • Un attribut relationnel (relatedEntity et relatedEntities) donne accès à d'autres entités. Les attributs relationnels peuvent aboutir soit à une entité unique (ou à aucune entité), soit à une sélection d'entité (0 à N entités). Les attributs relationnels s'appuient sur les relations "classiques" dans la structure relationnelle pour fournir un accès direct à une entité associée ou à des entités connexes. Les attributs relationnels sont directement disponibles dans ORDA en utilisant leurs noms.

Par exemple, considérons la structure partielle de la base de données et les propriétés de relation :

Tous les attributs de stockage seront automatiquement disponibles :

  • dans la dataclass Project : "ID", "name", et "companyID"
  • dans la dataclass Company : "ID", "name", et "discount"

En outre, les attributs relationnels suivants seront également disponibles automatiquement :

  • dans la dataclass Project : l'attribut theClient, du type "relatedEntity" ; il y a au plus une compagnie pour chaque projet (le client)
  • dans la dataclass Company : l'attribut companyProjects, du type "relatedEntities" ; pour chaque compagnie, il existe un certain nombre de projets reliés.

Note : La propriété "Manuel" ou "Automatique" d'une relation dans la base de données n'a aucun effet dans ORDA.

Tous les attributs de la dataclass sont exposés en tant que propriétés de la dataclass :

Gardez à l'esprit que ces objets décrivent des attributs, mais ne donnent pas accès aux données. La lecture ou l'écriture des données se fait à travers des objets d'entité. Pour plus d'iformations sur l'utilisation des attributs associés dans les entités, reportez-vous à Utilisation des attributs d'entités.

Certaines méthodes ORDA acceptent les références de chaîne comme noms d'attribut et peuvent également accepter des réféernces d'attribut. Par exemple, considérez ce qui suit :

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

Ce code définit une sélection d'entités d'employés dont le code postal est 95113. Il produit ensuite une collection de noms de famille. Au lieu d'une valeur de chaîne représentant un attibut, vous pouvez également utiliser une référence d'attribut comme ceci :

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

L'objet dataclass lui-même ne peut pas être copié en tant qu'objet :

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

Les propriétés de la dataclass sont toutefois énumérables :

 ARRAY TEXT($prop;0)
 OB GET PROPERTY NAMES(ds.Employee;$prop)
  //$prop contient les noms de tous les attributs de la dataclass

 
PROPRIÉTÉS 

Produit : 4D
Thème : ORDA

 
PAGE CONTENTS 
 
HISTORIQUE 

Créé : 4D v17

 
UTILISATION DE L'ARTICLE

4D - Mode Développement ( 4D v19)