Les développeurs utilisent de plus en plus des langages de programmation orientés objet tels que Java pour développer des objets de gestion et des composants. Ces objets peuvent être stockés dans une base de données. Un problème peut survenir lorsque l'utilisateur tente de stocker des objets dans une base de données relationnelle car la modélisation d'objets décrit un système via des objets dotés d'une entité, d'un comportement et d'un état encapsulé alors que la modélisation relationnelle décrit un système par le biais de ses données.
En outre, les codes d'objet dans un MOO pour un langage donné sont souvent différents de ceux utilisés dans une base de données relationnelle, ce qui requiert de modifier les codes d'objet après avoir généré le contenu d'un MOO dans un MPD ou le contenu d'un MPD dans un MOO afin de se conformer à la syntaxe du langage objet.
Vous pouvez utiliser la mise en correspondance des objets afin de contourner ce problème.
Le schéma suivant illustre le lien entre les classes et tables pour stocker les objets dans une base de données relationnelles :
La persistance des objets implique de stocker et d'extraire les objets dans une base de données relationnelles.
Si une classe hérite d'une classe non générée via un lien de généralisation, les attributs de la classe s'affichent dans la boîte de dialogue Sélection afin de vous permettre de créer une correspondance avec ces attributs hérités. Les attributs d'une classe dérivée non générée s'affichent également dans la boîte de dialogue Sélection.
La correspondance O/R d'une association permet de définir la navigabilité du rôle d'une association dans la base de données. Si un rôle d'association n'est pas navigable, il n'est alors pas nécessaire de définir une correspondance pour cette association puisqu'aucune information n'est transmise entre les classes. En revanche, lorsqu'un rôle d'association est navigable, vous devez configurer la structure pour la transmission des données au sein de la base de données. Dans les bases de données relationnelles, la transmission des données est mise en oeuvre via l'utilisation de clés étrangères conçues pour lier un enregistrement contenu dans une table à un enregistrement contenu dans une autre table.
Le type de correspondance pour une association dépend de la multiplicité de l'association :
Les associations un-à-un ou un-à-plusieurs peuvent être mises en correspondance avec une référence dans le modèle source. Cette référence est utilisée dans la base de données pour transférer des données et migrer les colonnes de clé dans la table appropriée.
Les associations plusieurs-à-plusieurs doivent être mises en correspondance avec une table associative. Cette table est créée pour conserver une relation entre plusieurs tables dans une base de données relationnelles. Les colonnes contenues dans une table associative sont une combinaison de clés dans la table impliquée dans la référence. Par exemple, les classes suivantes ont une association plusieurs-à-plusieurs :
Dans une base de données relationnelles, cette association est mise en correspondance avec la table associative suivante :
Lorsque les rôles d'association sont navigables, les requêtes suivantes sont automatiquement calculées :
Requête |
Action |
---|---|
Select (Rôle A) |
Extrait les instances de la classe A pour le rôle A défini sur la classe B. |
Insert (Rôle A) |
Associe une instance de la classe A à la classe B. Le traitement n'est effectué que si l'association source est une table associative. |
Delete (Rôle A) |
Supprime de la classe B l'association à la classe A. Cette requête n'est calculée que si l'association source est une table associative. |
Select (Rôle B) |
Extrait les instances de la classe B pour le rôle B défini sur la classe A. |
Insert (Rôle B) |
Associe une instance de la classe B à la classe A. Cette requête n'est calculée que si l'association source est une table associative. |
Delete (Rôle B) |
Supprime de la classe A l'association à la classe B. Cette requête n'est calculée que si l'association source est une table associative. |