Orm : mapping objet-relationnel
En conception, on utilise UML qui est un langage de modélisation objet. En développement, les langages de programmation orienté objet sont divers : on trouve Java, C#, Objective C, Eiffel, Python, Ruby, C++, PHP, Smalltalk...
Le concept orienté objet à même atteint les bases de données et on a reconnaît des bases de données orienté objet et des système de gestion de base de données (SGBD) orienté objet tel que O2, EyeDB...
Seulement ces SGBD sont peu mature, peu expérimenté (au moins lors de l'apparition de Hibernate). De plus, la migration d'une base de données relationnelle vers une nouvelle orienté objet et vraiment couteuse, sur tout si on parlait des grandes entreprises internationales.
Alors comment faire pour totalement développer en orienté objet ? Comment faire l'approche entre le monde relationnel (table, ligne, colonne, SQL...) et le monde objet (classe, attributs, méthodes, héritage, polymorphisme...) ?
La solution était de créer une illusion d'une base de données orienté objet à partir d'une base de données relationnelle.
Comment? En associant une classe à une table, les attributs aux champs de la table
Ce qui veut dire que pour un développeur, la BD est orienté objet. Il manipule des classe et des instances de classe. Il n'a pas intérêt de savoir quel enregistrement de quelle table il modifie. Il manipule seulement une instance d'une certaine classe, un objet.
Donc il peut bénéficier de l’orienté objet et gérer une BD relationnelle d’une façon transparente.
Tout ceci est assuré par le mapping objet-relationnel.
Alors, comment est assurer le mapping?
Il en y existe plusieurs framework de mapping objet-relationnel : JPA (Java Persistance API, Hibernate, TopLink, Java Data Object, iBATIS...
Dans la plupart des cas le mapping est décrit par des fichiers XML, mais avec java 5 on a commencé à utiliser