Gestion de la multiplicité pour les types de données complexes persistants

Si vous définissez une multiplicité sur un attribut de classe avec un type de données complexe, la génération reflétera cette multiplicité.

Dans l'exemple suivant, l'attribut Adresse dans la classe Client a un type de données complexe basé sur la classe Adresse.



Vous définissez également la multiplicité 0..2 pour l'attribut Adresse :



Génération sous forme de classe persistante

Lorsque la case Persistant est cochée pour l'attribut et que vous avez également sélectionné Persistante dans la liste Génération de classe, la multiplicité de l'attribut devient une cardinalité pour la référence entre les tables à l'issue de la génération de MOO en MPD.



Génération en tant que classe incorporée

Lorsque la case Persistant est cochée pour l'attribut et que vous avez sélectionné Incorporée dans la liste Génération de classe, tous les attributs de la classe utilisée comme type de données sont incorporés dans la table contenant la colonne créée à partir de l'attribut à type de données complexe. Les attributs sont générés autant de fois que requis par la multiplicité, à condition toutefois que la multiplicité indique une valeur fixe.

Dans l'exemple suivant, la multiplicité d'attribut est 0..2, l'attribut est donc incorporé deux fois :



La génération incorporée de types de données complexe n'est pas possible lorsque la multiplicité est indéfinie (0..n).

Génération sous forme de classe de type de données abstrait

Quand vous sélectionnez Persistant pour l'attribut et Persistante pour sa valeur de génération de classe, et lorsque la classe utilisée comme type de données est générée sous forme de type de données abstrait, la génération de la classe sous forme de type de données abstrait ne prend pas en compte la multiplicité de l'attribut généré.

Toutefois, dans le cas des SGBD qui prennent en charge ARRAY et LIST pour les types de données abstraits, la génération d'une classe en type de données abstrait peut refléter la multiplicité de l'attribut de la façon suivante :

Multiplicité

Généré comme

0..n ou 1..n

Type de données abstrait LIST (exemple : TABLE pour Oracle)

1..2 ou 0..10

Type de données abstrait ARRAY (exemple : VARRAY pour Oracle)

0..1 ou 1..1

Type de données abstrait OBJECT