Principes de persistance dans les applications orienté objet Encadrant : POISSONNIER Jean-Marie LAFFONT Benjamin TORGUET Patrice Étudiants : Travail Étude et Recherche Principes de persistance dans les applications orienté objet Principes de persistance - POISSONNIER Jean-Marie et LAFFONT Benjamin
Principes de persistance - POISSONNIER Jean-Marie et LAFFONT Benjamin Sommaire Introduction Mapping Implémentation Schéma Problèmes Exemple Persistance Méthodes Points négatifs Frameworks disponibles Conclusion Principes de persistance - POISSONNIER Jean-Marie et LAFFONT Benjamin
Principes de persistance - POISSONNIER Jean-Marie et LAFFONT Benjamin Introduction Principe de la persistance Principes de persistance - POISSONNIER Jean-Marie et LAFFONT Benjamin
Mapping : Implémentation Description du problème Lien modèle objet ↔ modèle relationnel Modèle objet Identité, État, Comportement, Encapsulation Modèle relationnel Relation (table), N-uplets (lignes), Attributs (colonnes) Principes de persistance - POISSONNIER Jean-Marie et LAFFONT Benjamin
Mapping : Schéma de fonctionnement Principes de persistance - POISSONNIER Jean-Marie et LAFFONT Benjamin
Mapping : Problèmes (1/2) Difficultés d’implémentation Encapsulation Types de données Transaction Manipulation des données Différences de structure et d’intégrité Difficultés d’implémentation Encapsulation Problème d’héritage (public – privé) Types de données Pas de référence et pointeurs, Contraintes de taille maxi en relationnel et pas en objet (ex string-varchar) Transaction Pas de transaction en objet Manipulation des données Type d’accès au donnée différent entre objet(accesseurs) et relationnel (requêtes) Principes de persistance - POISSONNIER Jean-Marie et LAFFONT Benjamin
Mapping : Problèmes (2/2) Différences de structure et d’intégrité Difficultés d’implémentation Différences de structure et d’intégrité 1/Portée des variables objet vers relationnel 2/ Contraintes d’intégrité de la base pseudo portée coté objet Principes de persistance - POISSONNIER Jean-Marie et LAFFONT Benjamin
Mapping : Arbre d’héritage de classe Diagramme de classe Principes de persistance - POISSONNIER Jean-Marie et LAFFONT Benjamin
Mapping : Arbre d’héritage de classe Mapping vertical Principes de persistance - POISSONNIER Jean-Marie et LAFFONT Benjamin
Mapping : Arbre d’héritage de classe Mapping horizontal Principes de persistance - POISSONNIER Jean-Marie et LAFFONT Benjamin
Mapping : Arbre d’héritage de classe Mapping filtré Principes de persistance - POISSONNIER Jean-Marie et LAFFONT Benjamin
Persistance : méthodes (1/3) Géré par le programme Cohérence mémoire – programme avec ou sans cache et optimisation Comptage des lignes des tables Expiration des données Géré par la base Système de trigger Champs supplémentaires (Date ou Heure) Géré par le programme Cohérence mémoire – programme avec ou sans cache Lors d’un ajout le programme détermine si il faut envoyer les requêtes, les grouper, les optimiser, … Comptage de la base Count(*) Expiration des données Timeout threadé de façon externe au thread principal et géré en toute transparence Géré par la base Système de trigger Lors des différentes actions sur la base, celle-ci lève un événement Champs supplémentaires (Date ou Heure) Principes de persistance - POISSONNIER Jean-Marie et LAFFONT Benjamin
Persistance : méthodes (2/3) Géré par une tierce partie Système de cache distribué (ex : JCache) Principes de persistance - POISSONNIER Jean-Marie et LAFFONT Benjamin
Persistance : points négatifs (3/3) Performance Non adaptable à tous les projets Contraintes sur l’écriture de code Tests supplémentaires Césure entre le relationnel et l’objet Pas de polymorphisme Pas de type-checker robuste Performance Non adaptable à tous les projets Contraintes sur l’écriture de code annotation , Type de donnée (type-checker robuste) Tests supplémentaires Césure entre le relationnel et l’objet Pas de correspondance exacte : R->O Classes non robuste, peux d’objet et O->R Problème de mapping… (CF JM) Pas de polymorphisme Etudiant – Professeur Homme alors exemple : Pas de liste générique Principes de persistance - POISSONNIER Jean-Marie et LAFFONT Benjamin
Frameworks disponibles (1/3) Hibernate – Nhibernate Java et C# Permet de faire toutes les générations relationnel – Objet Top-Down, Bottom-Up, Middle-Out, Meet in the middle Compatible toute base de donnée Facile à prendre en main Open source Principes de persistance - POISSONNIER Jean-Marie et LAFFONT Benjamin
Frameworks disponibles (2/3) IBatis Java et .Net Proche du SQL et bonnes performances Optimisé cache de requête Open source Rapide à mettre en place Principes de persistance - POISSONNIER Jean-Marie et LAFFONT Benjamin
Frameworks disponibles (3/3) Toplink Java Plutôt adapté Oracle Mature, testé et supporté par Oracle Adapté aux applications en cluster Propriétaire Demande une certaine maîtrise Principes de persistance - POISSONNIER Jean-Marie et LAFFONT Benjamin
Principes de persistance - POISSONNIER Jean-Marie et LAFFONT Benjamin Conclusion Technologie jeune Historique Tous les problèmes ne sont pas résolus Multiples avantages Choix difficile Relationnel milieu des années 70 Révolution objet début des années 90 Fort rapprochement des deux Réduit les efforts, les couts et le temps de développement Faire abstraction du lien relationnel – objet Choix utilisation O/N et quel FW ? Principes de persistance - POISSONNIER Jean-Marie et LAFFONT Benjamin
Principes de persistance - POISSONNIER Jean-Marie et LAFFONT Benjamin Questions ? Principes de persistance - POISSONNIER Jean-Marie et LAFFONT Benjamin