I. Présentation de l'ORM▲
I-A. Qu'est-ce que l'ORM ?▲
L'ORM (Object-Relational Mapping) est une technique de programmation faisant le lien entre le monde de la base de données et le monde de la programmation objet. Elle permet de transformer une table en un objet facilement manipulable via ses attributs.
Cette technique de programmation est largement répandue dans le monde Java avec divers frameworks tels Hibernate ou JGrinder. Elle est cependant moins utilisée dans l'univers de la programmation web, malgré un usage intensif des bases de données.
I-B. Exemple d'utilisation de l'ORM▲
En guise d'introduction, voici un exemple simple de comparatif entre un code utilisant les fonctions standard de MySQL et d'EZPDO effectuant une requête de sélection.
I-B-1. Base de données utilisée▲
Ce sera la base de données utilisée tout au long de cet article.
I-B-2. Avec les fonctions standards de MySQL▲
$host
=
"
Serveur
"
;
$user
=
"
MonLogin
"
;
$password
=
"
MonMdp
"
;
$database
=
"
BaseDeDonnées
"
;
$conn
=
mysql_connect($host
,
$user
,
$password
);
if (!
$conn
) {
echo "
Connexion impossible
"
;
exit;
}
mysql_select_db($database
);
$result
=
mysql_query("
SELECT nom FROM film;
"
);
if ($result
>
0
) {
while($row
=
mysql_fetch_assoc($result
)) {
echo $row
[
"
nom
"
]
.
"
\n
"
;
}
}
mysql_close();
Normalement vous devriez être relativement familier avec ce bout de code.
I-B-3. En utilisant EZPDO▲
include_once('
ezpdo_runtime.php
'
);
epLoadConfig('
config.xml
'
);
$m
=
epManager::
instance();
$listeFilm
=
$m
->
find("
FROM film
"
);
if (!
$listeFilm
) {
exit();
}
foreach($listeFilm
as $film
) {
echo $film
->
nom;
}
Si ce code n'est pas très clair, c'est normal le but de cet article est justement de l'expliquer.
Vous remarquerez que la méthode utilisant EZPDO n'est pas vraiment plus courte par rapport à celle utilisant les fonctions de MySQL. Quels sont donc les avantages d'utiliser l'ORM plutôt qu'une autre solution ?
I-C. Les avantages de l'ORM▲
L'ORM permet tout d'abord de simplifier grandement l'accès aux données. Chaque tuple devient une instance d'objet et les méthodes de modification sur les données deviennent uniformisées, on peut effectuer les mêmes traitements sur une donnée qu'elle provienne d'une base de données ou de n'importe quelle autre source.
Un autre avantage de l'ORM est de rendre l'accès aux données complètement indépendant du SGBD utilisé. Il devient donc très simple de changer de SGBD au cours du développement de l'application. Il faut cependant noter qu'il n'est pas nécessaire d'utiliser l'ORM pour bénéficier de cette indépendance, des solutions telles qu'ADODB ou MDB2 offrent déjà ces fonctionnalités.
I-D. Lacunes de l'ORM▲
Malgré tous ces avantages, l'ORM n'est pas non plus la solution parfaite pour tous les cas d'utilisation.
L'utilisation de l'ORM peut s'avérer assez complexe, particulièrement dans le cas de petits sites web avec une faible utilisation des bases de données.
Dans le cas opposé, si les accès à la base de données sont cruciaux, il sera préférable d'utiliser une autre méthode d'accès aux données plus optimisée. Il ne faut pas oublier que toutes les solutions d'ORM ont un coût en termes de performances.
Après cette courte présentation de l'ORM, qui j'espère vous aura donné envie de l'utiliser, je vais vous présenter une solution d'ORM adaptée au PHP.