Object Relational Mapping - Java Persistence API
Object Relational Mapping
Introduction
Avant de s'aventurer dans le monde de l'Object Relational Mapping, il est nécessaire de considérer les deux environnements suivants
Les bases de données relationnelles
Les bases de données relationnelles sont des structures de données basées sur l'algèbre relationnel. Elles permettent le stockage de grande quantité de données ainsi que les opérations standards suivantes :
- Ajout ;
- Lecture ;
- Mise à jour ;
- Suppression.
Les bases de données relationnelles connaissent un grand succès par leur capacité à stocker l'information de façon uniforme et intéropérable.
Le monde objet
Le monde objet est un paradigme représentant le monde comme un ensemble d'entités nommées objet possédant les propriétés suivantes :- Autonome ;
- En relation ;
- Qui coopèrent.
Objectifs
Le but de l'Object Relational Mapping ou O.R.M est de faciliter la manipulation de données stockées dans un Système de Gestion de Base de Données Relationnelles (SGBD) au sein des langages de programmation objet.
En effet, la plupart des applications nécessite le stockage d'un grand nombre de données et a donc recours aux bases de données. Cependant, les opérations les plus basiques d'ajout, lecture, mise à jour et suppression sont loin de la trivialité que souhaiterait le développeur.
Afin de répondre à ce besoin de facilitation, l'O.R.M offre une couche d'abstraction qui réalise la traduction des données extraites de la base de données vers un objet propre au langage de programmation. Le développeur travaille ainsi uniquement avec des objets sans se soucier du stockage sous-jacent des données.
Voici un schéma représentant la logique de l'O.R.M :
Il est important de noter que l'O.R.M est un concept et que l'on trouvera ainsi différentes implémentations offrant plus ou moins de fonctionnalités.
L'apport des technologies d'O.R.M
L'usage de technologies d'O.R.M apporte de nombreuses améliorations dans le développement des applications :
- simplification du code, on ne fait que "parler objet" de la couche la plus haute à celle la plus basse ;
- augmentation de la maintenabilité, il n'y a plus de code SQL à maintenir au sein du code objet ;
- augmentation de la portabilité, la base de données étant masquée il est possible de passer d'un SGBD à un autre (dans les limites du support de l'O.R.M choisi).
Les implémentations
Les avantages sus-cités ont amené à la réalisation de nombreuses implémentations dans les langages les plus courants.
Voici une liste non exhaustive de langages et leurs O.R.M associés :
- Java dispose des implémentations Java Persistence API qui est présentée dans la section eponyme ;
- Python possède la libraire Python Database Object ;
- Perl dispose du module Rose::DB:Object ;
- C# possède le portage d'Hibernate, un O.R.M du monde Java ;
- Ruby dispose d'un O.R.M dans son framework Ruby On Rails.