Les codes persistants sont des codes définis pour les classes et les attributs de MOO qui sont utilisés lors de la génération d'un MOO dans un MPD. L'utilisation de tels codes facilite également l'ingénierie par va-et-vient en permettant de récupérer des codes d'objet depuis la base de données.
Vous pouvez définir le type de persistance que vous souhaitez mettre en oeuvre dans la zone de groupe Persistant, située sur l'onglet Détails de la feuille de propriétés de classe :
Générer une table signifie que la classe est générée dans une table.
Migrer les colonnes signifie que la classe n'est pas générée, et que ses attributs et associations sont migrés vers la table parent ou enfant.
Générer un type de parent abstrait signifie que la classe est générée comme un type de données abstrait, un type de données utilisateur qui peut inclure un grand nombre de valeurs de données et de fonctions.
Les attributs et associations des classes persistantes dont le mode de génération de persistant est défini à "Migrer les colonnes" sont migrés vers les tables parent ou enfant.
Vous pouvez également définir des types de données persistants pour les attributs de classe et les domaines. La gestion de la persistance des types de données impose de prendre en compte les paramètres suivants :
Dans le cas d'un type de données simple, basé sur les types de données de MOO standard : si le type de données est persistant, la génération conserve le type de données persistant dans le modèle cible. Dans le cas contraire, le type de données est converti en type de données standard dans le modèle cible
Dans le cas d'un type de données complexe, basé sur un classificateur : si le type de données est persistant, vous pouvez définir d'autres options de génération en fonction du résultat que vous souhaitez obtenir dans le modèle cible et en fonction de la multiplicité de l'attribut
Si vous générez le MOO suivant dans un MPD :
La migration des attributs du MPD généré dépend des options de persistance des classes dans le MOO source :
Persistance |
Résultat |
---|---|
Parent et enfant / Générer une table |
Deux tables sont créées pour chaque classe |
Parent / Migrer les colonnes Enfant / Générer une table |
La table enfant est générée avec les attributs parent |
Parent / Générer une table Enfant / Migrer les colonnes |
La table parent est générée avec les attributs enfant |
Parent et enfant / Migrer les colonnes |
Rien n'est généré |
Dans le MOO suivant, la classe Client hérite de Personne via un lien de généralisation. Personne n'est pas persistante, mais Client persistante.
Client hérite des attributs de la classe parent dans le MPD généré :
Une classe dérivée est créée pour des motifs d'ordre conceptuel afin d'améliorer la lisibilité d'un modèle, sans pour autant ajouter d'information sémantique. Il n'est pas nécessaire de générer une classe dérivée dans un MPD, et les attributs de cette classe doivent être migrés vers le parent.
Dans l'exemple suivant, la classe Femme est créée pour permettre une analyse plus complète de la classe Employé et mettre en exergue l'attribut spécifique "Congé maternité". Cette classe est dérivée, et donc pas générée mais elle est persistante :
Dans le MPD généré, Employé hérite de la classe parent ainsi que de la classe dérivée :