JeuWeb - Crée ton jeu par navigateur
Object Relational mapping - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Object Relational mapping (/showthread.php?tid=4502)



Object Relational mapping - Kihmé - 30-12-2009

Bonjour à tous,

Pour mon jeu j'ai besoin de réaliser un mapping. Je développe en POO, elle est devenue pour moi quelque chose de très naturelle. J'ai beaucoup travaillé en java et asp.net ce qui m'a permit d'avoir un bon niveau en poo.

Cependant je n'ai jamais fait de mapping. Je me documente énormément depuis quelques temps mais tout ce que je trouve ce sont des informations sur les outils ORM existants. Ca me pose un soucis puisque je veux réaliser moi même mon mapping. J'ai lu dans un article il y a peu de temps que les outils ORM se voyaient utiles uniquement lorsque les classes ont été développées indépendamment de la base de données. Or dans mon cas la bdd a été pensée et développée avant les classes. La bdd est prête et je m'apprête à faire mes classes. Et dans ce cas là, du moins par rapport à ce que j'ai pu lire, faire son mapping soit même reste une meilleure solution.

Je cherche à le faire moi même mais j'avoue n'avoir aucune notion des conventions et des méthodes de réalisation d'un mapping. Donc si quelqu'un a des documents exemples je serais bien preneur.

Merci,

Kihmé


RE: Object Relational mapping - OncleJames - 30-12-2009

Bonjour,

Les outils peuvent servir dans les deux sens (Doctrine par exemple), je ne pense pas à moins que ce soit dans un but d'apprendre, que la ré écriture des mappings, recherche des tuples via les tables parents/enfants soit vraiment utile, c'est long et pas forcément simple.

Je sais que Doctrine permet de réaliser les mapping et récupération sur les tables parents/enfants très facilement, pour ma part je suis resté sur le mapping de Zend.

On déclare un nom pour chaque relations, les colonnes, tables, clé cible dans des tableaux, puis on appel une fonction findParents(Nom relation).
Derrière je pense qu'on trouve des jointures simplement.

Si c'est sur un projet hors framework, je ne peux te conseiller que Doctrine, je n'ai eu que des retours positifs : Site officiel

Bonne soirée,
Onclejames


RE: Object Relational mapping - Kihmé - 30-12-2009

Je travaille hors framework en effet, et je voulais garder ce côté "je fais tout moi même" non seulement pour apprendre mais aussi pour être sur de ce que je fais et bien tout comprendre. Je vais lire la documentation de doctrine. Merci OncleJames.

Citation :recherche des tuples via les tables parents/enfants soit vraiment utile, c'est long et pas forcément simple.

Je vais peut être dire une connerie mais d'après ce que j'avais commencé à comprendre il n'est pas utile de rechercher tous les tuples, il suffit de créer une classe pour une table, dans les propriétés de la classe faire des squelettes de requêtes et ainsi il n'y a pas besoin d'avoir à récupérer tous les tuples, ça se fait seulement si on en a besoin au moment voulu, non?


RE: Object Relational mapping - DragonMaster - 30-12-2009

(30-12-2009, 07:35 PM)OncleJames a écrit : Les outils peuvent servir dans les deux sens (Doctrine par exemple), je ne pense pas à moins que ce soit dans un but d'apprendre, que la ré écriture des mappings, recherche des tuples via les tables parents/enfants soit vraiment utile, c'est long et pas forcément simple.

Moi je pense que sa peut-être très utile mais dans des contextes bien précis. Pour un soucis de performance définir un mapping à son image est vraiment avantageux. Les mappings ralentisse en générale le code, car il n'optimise pas du tout les requêtes vers la BD. En revanche, avec un mapping personnel, les mappings peuvent au contraire l'accélérer puisqu'on sait spécifiquement à quoi sert chaque table de la BD. Exemple, tu a une table nom d'utilisateurs et tu sais que souvent elle sera accédé avec Ajax pour l'auto-complétion ou la validation (genre je tape kev et on me propose kevin233, kevin234...etc) alors on sait que les requêtes se feront par groupe d'utilisateurs commençant par. Alors pourquoi ne pas charger un groupe d'utilisateur avec une seule requête et les mettre en cache plutôt que de faire plusieurs select? (ok mon exemple est assez mauvais j'avoue mais vous comprenez le principe).

J'ai déjà fait un petit mapping pour un cours de Génie Logiciel (Internet), le principe est d'offrir des méthodes universelles pour charger et enregistrer sur la BD. Personnellement j'avais une classe Requete qui travaillait avec une factory pour charger les objets à la volé. Les objets avaient une méthode commit() (je suis un vieux d'oracle) qui mettait à jour ou insérait l'objet. Bref ce n'était rien de bien immense ni de compliqué et sa ma pris très peu de temps à faire et c'était pourtant bien plus performant qu'un ORM existant et adapté à mes besoins.


RE: Object Relational mapping - Kihmé - 15-04-2010

je suis toujours au même point. On m'avait orienté vers doctrine, mais je ne sais pas pourquoi je n'arrive pas du tout à le trouver intéressant, le fait de devoir utiliser leur yaml peut être.

Enfin bref, je reviens sur l'idée de me bricoler un truc maison

Puis je demander à quelqu'un qui a travailler en poo avec base de donnée relationnelle, de partager son diagramme de classes et des extraits de son code afin que je me fasse cette idée, c'est je pense ce petit truc qui me manque pour pouvoir me lancer?

Merci d'avance