1. Objet du mapping objet / relationnel
Nous avons déjà vu une façon d'accéder à des données en base à partir d'une application Java consistant à écrire du code SQL dans du code Java, et à le passer à la base via un pilote JDBC. Cette méthode fonctionne correctement et est raisonnablement efficace. Elle comporte deux inconvénients majeurs :
-
elle impose d'écrire du code SQL propre à un serveur de base de données dans notre code Java ;
-
elle impose l'écriture de code SQL répétitif, à faible valeur ajoutée, notamment toutes les opérations CRUD de base.
Le mapping objet / relationnel vise en premier lieu à s'affranchir de ces deux contraintes.
Cette technique consiste à associer de façon déclarative, un modèle d'objets Java (ou exprimé dans un autre langage), à une structure de tables SQL, déjà existante ou non. Cette association peut se faire de différentes façons : soit par annotation du code Java, soit en utilisant des descripteurs XML.
Une fois cette association déclarée, l'API JPA est capable de vérifier si la structure de tables existe bien en base de données, et si elle n'existe pas, elle est capable de la créer. Elle est également capable d'écrire l'ensemble des requêtes SQL nécessaires à la manipulation complète en base des objets Java instance des classes annotées.
De plus, la façon dont les classes Java sont annotées est indépendante de la base de données utilisée. Il est donc possible d'associer un jeu de classes annotées à (à peu près) n'importe quelle base de données, sans modification du code Java.