Mappage d’objet-relationnel

Mappage d’objet-relationnel

Dans le paradigme de la programmation orientée objet, la technique du mappage d’objet-relationnel, ou ORM pour object–relational mapping, est couramment utilisée. Elle permet à des applications de convertir les informations d’une base de données relationnelles, contenant des tables à deux dimensions, sous une forme qu’elle connaît : les objets.

Le modèle du domaine (ou domain model) est un modèle conceptuel qui représente des aspects sur les données et les règles métiers pour résoudre des problèmes liés à un domaine de connaissance, par exemple la souscription à une offre de prêt. On dit que l’ORM est la persistance de ce modèle. C’est-à-dire qu’il va gérer le stockage des données du domaine. En UML, on représente le modèle du domaine en utilisant un diagramme de classe.

À partir du modèle du domaine, des entités d’ORM seront créées pour mapper la base de données. L’ORM peut créer, lire, mettre à jour ou supprimer (ou CRUD pour create, read, update et delete) les entités, et les informations seront lues ou sauvegardées dans la base de données. Il n’y a plus besoin d’écrire des requêtes SQL avec du code pour effectuer ces quatre opérations, mais d’appeler simplement des méthodes. Cette couche d’abstraction permet d’écrire beaucoup moins de lignes de code.

Pour interroger la base de données, l’ORM propose un langage proche du SQL, le JPQL pour Java Persistence Query Language. Dans les requêtes, on n’interroge plus les tables, mais les entités (objets). Ce langage est compatible avec les différentes syntaxes des bases de données. Quand JPQL n’est pas adapté pour certaines requêtes, on revient au SQL.

Le patron de conception unit of work est présent dans un ORM, comme dans les transactions des bases de données. Il définit, pendant une transaction métier, l’ensemble des actions qui modifiera la base de données, et ne mettra à jour celle-ci qu’à la toute fin. Donc plusieurs opérations sur des entités peuvent être synchronisées une seule fois (à la fin) afin d’optimiser le nombre de requêtes et de gérer les retours en arrière (ou rollback). C’est le contexte de persistance.

Laisser un commentaire