PowerAMC prend en charge différentes stratégies de mise en correspondance pour la persistance d'héritage. Chaque stratégie a ses avantages et ses inconvénients, et vous devez choisir celle qui est la mieux adaptée à votre cadre de persistance.
Une table par hiérarchie de classes. Dans cette stratégie, la totalité de la hiérarchie de classes est mise en correspondance avec une table. La table a une colonne qui sert de "colonne discriminante". La valeur de cette colonne identifie la sous-classe spécifique à laquelle l'instance qui est représentée par la ligne appartient.
Pour pouvoir appliquer ce genre de stratégie, vous devez définir le type de transformation des classes extrémité à Générer une table et le type de transformation des autres classes de la hiérarchie à Migrer les colonnes. PowerAMC va uniquement générer les tables pour les classes extrémité. Si vous souhaitez mettre en correspondance des classes avec d'autre classes, vous devez le faire manuellement.
Classes | Tables |
---|---|
|
|
Stratégie de sous-classe jointe. La classe racine de la hiérarchie de classes est représentée par une table unique. Chaque sous-classe est représentée par une table distincte. Cette table contient les champs qui sont spécifiques à la sous-classe (non hérités de sa classe parent), ainsi que les colonnes qui représentent cette clé primaire. La ou les colonnes de clé primaire de la table de la sous-classe servent de clé étrangère à la clé primaire de la table de la classe parent.
Pour pouvoir appliquer cette stratégie, vous devez définir le type de transformation de toutes les classes à Générer une table. Vous pouvez également définir un discriminant pour ce type de stratégie, bien que cela ne soit pas obligatoire.
Classes | Tables |
---|---|
|
|
Une table par classe. Chaque classe est mise en correspondance avec une table distincte. Toutes les propriétés de la classe, y compris les propriétés héritées, sont mises en correspondance avec les colonnes de la table pour la classe.
Pour pouvoir appliquer ce genre de stratégie, vous devez définir le type de transformation de la classe racine à Générer une table et le type de transformation des autres classes de la hiérarchie à Migrer les colonnes.
Pour chaque hiérarchie de classes, un discriminant est nécessaire pour faire la distinction entre différentes instances de classes. Vous devez sélectionner l'un des attributs de la classe racine dans la liste Attribut discriminant située dans la feuille de propriétés d'un lien d'héritage enfant de la classe racine. L'attribut sera transformé en colonne discriminante. Dans l'exemple suivant, on définit un attribut supplémentaire shapeType dans Shape et on le sélectionne comme attribut discriminant :
Classes | Tables |
---|---|
|
|
Stratégie mixte - Vous pouvez appliquer plusieurs stratégies dans la même hiérarchie d'héritage.
La transformation des classes d'entité en utilisant le type de transformation Générer une table ne changera pas, en revanche la transformation de celles définies à Migrer les colonnes sera légèrement différente. Si des classes d'entité définies à Migrer les colonnes ont à la fois leur classes parent et enfant ayant un type de transformation Générer une table, les colonnes transformées depuis leurs attributs persistants seront migrées dans des tables transformées depuis des sous-classes. La migration vers les sous-classes a une priorité plus élevée.