Brevet FR2874716A1 — publié le 20060303

La présente invention concerne un dispositif de génération d'accesseurs orientés objet pour autoriser l'accès de nouvelles applications développées dans des environnements orientés objet à des bases de données relationnelles ou objet existantes. Elle concerne également un procédé mis en oeuvre par ledit dispositif. De manière générale, pour des raisons de simplicité de représentation des données et afin de permettre une meilleure productivité des développeurs et utilisateurs, le modèle de données relationnel est couramment utilisé car il permet une représentation tabulaire aussi bien des objets que des associations entre objets. Dans ce cas, une base de données relationnelle se présente comme un ensemble de relations d'où le nom du modèle, ces relations étant aussi appelées tables. A une base de données est associé un schéma conceptuel qui décrit la structure et le type de données qu'elle contient et éventuellement, et c'est le cas dans la présente application, les contraintes ou règles qui doivent toujours être vérifiées, la base de données est elle-même gérée par un système de gestion de bases de données.Toute relation a également un schéma qui décrit sa structure et une extension qui correspond à l'état de cette relation à un instant donné. Le schéma d'une table est composé d'un ensemble d'attributs (ou colonnes) dont un sous-ensemble constitue la clé qui permet d'identifier les autres attributs de la relation ou un élément (n-uplet) de la relation. L'extension d'une relation est constituée par un ensemble de n-uplets (ou lignes). Un n-uplet correspond à un ensemble de valeurs prises par les attributs d'une table pour représenter un objet ou un lien entre des objets du monde réel. Deux relations partageant des attributs de même domaine peuvent être jointes, on parle alors de jointure des relations, cette jointure étant réalisée selon un ou plusieurs de ces attributs appelés attributs de jointure.La jointure de deux tables peut être ainsi obtenue, elle permet de faire un rapprochement entre ces deux tables par comparaison des valeurs des colonnes de ces deux tables, les colonnes utilisées pour la comparaison étant appelées colonnes de jointure. Le résultat de cette jointure est une troisième table dont les colonnes proviennent des deux tables et les lignes sont celles des deux tables vérifiant le critère de comparaison. Dans cet esprit, l'utilisation d'un langage standard de définition et de manipulation de données tel que, par exemple, le langage SQL (Structured Query Language), apparaît très avantageuse pour la définition et la manipulation des bases de données relationnelles. Le modèle, de plus, permet de donner des informations sémantiques supplémentaires sur les attributs des relations en imposant des contraintes d'intégrité référentielles.Ainsi, en termes de clés, un attribut défini comme clé primaire permet de déterminer de façon unique le n-uplet dont il fait partie, une val eur donnée pour cet attribut ne pouvant pas se retrouver dans deux n-uplets différents. Egalement, un attribut défini comme clé étrangère permet de référencer la clé primaire d'une autre table. Il est alors possible de définir un lien entre ces deux tables par l'intermédiaire de l'attribut clé étrangère et de la clé primaire référencée. Outre la simplicité et l'amélioration des performances, dues à l'utilisation du modèle de données relationnel, la normalisation d'un langage tel que le langage SQL, facile d'utilisation , a contribué à la prolifération des bases de données relationnelles. Ainsi, jusqu'à présent, la plupart des applications développées, et ceci depuis plus d'une décennie, sont des applications conçues pour être exploitées par des systèmes de gestion de bases de données relationnelles. Mais la tendance actuelle est plutôt d'évoluer vers la conception d'applications utilisant des technologies orientées objet.Néanmoins, ces deux techniques doivent pouvoir cohabiter et les bases de données relationnelles existantes continuer d'être exploitées dans les divers systèmes, ce qui pose le problème de l'accès des applications développées dans des environnements orientés objet auxdites bases de données relationnelles. Par conséquent, il devient indispensable et urgent de trouver une solution rationnelle et efficace à ce problème d'accès. Pour résoudre ce problème, plusieurs solutions ont été proposées dont les deux suivantes. La première solution, consiste à générer sous forme de code compilable des accesseurs orientés objet en fonction d'un modèle de données prédéfini au moyen d'un langage de définition de données. Cette solution rationalise le problème de l'accès au prix de temps élevés de compilation ou de démarrage de l'application tout en rendant impossible toute évolution du schéma de données sans redémarrer l'application. La deuxième solution, consiste à remplacer dynamiquement les interfaces standard d'accès aux propriétés de la base objet par des interfaces permettant d'accéder aux données stockées dans la base relationnelle en fonction d'un modèle de données défini au moyen d'un langage de définition de données. Cette solution rationalise le problème de l'accès au prix d'une moindre généricité par rapport à une solution d'accesseurs, notamment en raison de l'impossibilité de paramétrer l'accès. La présente invention a pour but de remédier aux divers inconvénients présentés par les solutions connues et propose un dispositif d'accesseurs d'interfaces orientées objet dont la conception est telle qu'elle combine la généricité d'une solution d'accesseurs à la flexibilité d'une solution de surcharge des interfaces d'accès. Pour cela, le dispositif de génération d'accesseurs mentionné dans le préambule est remarquable en ce qu'il crée dynamiquement lors de l'exécution l'application, selon un procédé de génération d'accesseurs orientés objet et à partir d'un schéma de données défini dans un langage de définition de données, des objets appelables selon une interface d'accesseur orienté objet. En outre, le dispositif de génération d'accesseurs orientés objet selon l'invention est remarquable en ce qu'il minimise le temps de démarrage de l'application et l'occupation mémoire en reléguant le plus tard possible l'exécution du procédé de génération d'accesseurs. Enfin, le dispositif de génération d'accesseurs orientés objet selon l'invention est remarquable en ce qu'il prend en compte d'éventuelles modifications dudit schéma de données en cours d'exécution de l'application. L'invention sera mieux comprise à l'aide de la description qui va suivre, donnée uniquement à titre d'exemple et faite en se référant au dessin annexé. Un dispositif de génération d'accesseur selon l'invention comporte une application (1), un système de base de données relationnelle (3a), un système de base de données objet (3b), un dispositif de définition de schéma de données (4) intégré à ladite application, un contrôleur d'accès (5) et des accesseurs (2). Le fonctionnement du dispositif de génération d'accesseur, dont la structure a été décrite précédemment, comporte une étape d'initialisation. Au cours de cette étape, tous les accesseurs (2) sont détruits par le contrôleur d'accès (5). Le fonctionnement dudit dispositif de génération d'accesseur comporte ensuite une étape de génération d'accesseur. Au cours de cette étape l'application (1) transmet au contrôleur d'accès (5) une demande d'accès à un accesseur. Ledit contrôleur d'accès (5) vérifie l'existence d'un accesseur pour cet objet dans la base objet (3b) par un parcours hiérarchique. Dans le cas où aucun accesseur n'est disponible, le contrôleur d'accès (5) instancie un objet appelable ayant une interface d'accesseur en fonction de la définition de schéma de données (4) et l'associe en tant qu'accesseur (2) de l'application (1) par un procédé de modification d'attribut. Le fonctionnement dudit dispositif de génération d'accesseur comporte ensuite une étape d'accès. Au cours de cette étape, l'accesseur généré (2) est appelé pour accéder aux propriétés de l'objet stockées sous formes de données dans la base relationnelle (3a) ou d'objets dans la base objet (3b). Ladite étape de génération d'accesseur est répétée à chaque demande d'accès à un accesseur (2) de l'application (1). Il apparaît clairement qu'un dispositif de génération d'accesseur selon l'invention remédie aux inconvénients des dispositif de génération d'accesseur classiques. En effet, le dispositif de génération d'accesseurs selon l'invention permet de générer des accesseurs de complexité arbitraires capables d'assurer une interface transparente de ladite application avec une base objet ou relationnelle de structure hétérogène. Un autre avantage de ce dispositif de génération d'accesseurs est de retarder la génération d'accesseur au moment où l'application en a besoin, ce qui permet de réduire le temps de démarage de ladite application et de minimiser l'occupation mémoire en ne générant pas les accesseurs inutilisés. Un autre avantage de ce dispositif de génération d'accesseur est de permettre une modification du schéma de données en répétant l'étape d'initialisation sans pour autant redémarrer ladite application. REVENDICATIONS 1. Procédé de génération d'accesseurs orientés objet pour autoriser l'accès de nouvelles applications développées dans des environnements orientés objet à des bases de données relationnelles ou objet existantes, caractérisé en ce qu'il comprend une étape d'initialisation, une étape de contrôle d'existence d'accesseur, une étape d'instanciation d'accesseur sous forme d'objet appelable conforme à un schéma de données, une étape d'accès et une étape d'appel d'accesseur. 2. Dispositif de génération d'accesseurs orientés objet pour autoriser l'accès de nouvelles applications développées dans des environnements orientés objet à des bases de données relationnelles ou objet existantes pour la mise en oeuvre du procédé selon la revendication 1, caractérisé en ce qu'il comprend une application (1), un système de base de données relationnelle (3a), un système de base de données objet (3b), un dispositif de définition de schéma de données (4) intégré à ladite application, un contrôleur d'accès (5) et des accesseurs (2).