Les ORMs ● Faire coexister le monde relationnel et objet.

Slides:



Advertisements
Présentations similaires
I. Framework : Généralités II. Hibernate III. CakePHP Plan de l’exposé : 1.
Advertisements

Formation à l’utilisation de K-Sup V5 février 2009 CRISI - COM.
Développement d’application avec base de données Semaine 1 : Présentation d’Entity Framework Automne 2015.
Reformulation  L’AFPA promoteur du projet souhaite mettre en place une application WEB afin de remplacer une solution en Java. Pour ce projet 4 mandataires.
Présentation du projet JAVA Système de messagerie instantanée cryptée.
Oubliez SQL avec SQLAlchemy Pycon.fr 2009 Michael Scherer.
EXTRACTION LIQUIDE-LIQUIDE 1. Généralités 1.1 Présentation 1.2 Intérêt1.3 Constante K D 2. Représentation des systèmes ternaires 4. Différents types d.
RMLL 2008 Isis-FISH/Gesi Benjamin Poussin Code Lutin
26/09/2016 Projet 1789 : Plateforme d'enseignement innovante Groupe n°81 : Lan Xu, Tanguy Kerdoncuff, Thomas Fredon, Vincent Feugère Encadrants : Alexander.
Made with OpenOffice.org 1 Travailler en réseau intranet à l'école Un réseau : pourquoi ? Architecture du réseau Partager un dossier Enregistrer en réseau.
FORMATION PRODIGE Aspects techniques Chistophe BOCQUET (CPII/DOO)
SQL : 4 fonctions d'exploitation de SGBD SQL (Structured Query Language, traduisez Langage de requêtes structuré) est un langage informatique ayant pour.
1- phpMyAdmin 3ème partie : Manipulation des données Le langage SQL 2- Gérer les tables 3- Gérer les données.
SQL partie 1 Langage de Définition de Données. SQL est un langage de définition de données  SQL est un langage de définition de données (LDD), c'est-à-dire.
Cours de HTML suite 3. Sommaire...  Les formulaires. Les formulaires.  Structure basique du formulaire, balise. Structure basique du formulaire, balise.
1 Programmation en C++ Cycle de vie ● La vie d'un objet ● Destructeur ● Gestion de mémoire dynamique.
Installation De Peakup.  Télécharger le fichier peakup2.4.0.free.zip  Décompresser le fichier extrait sur une Directory de votre choix  Créer un lient.
Test logiciel J.M. Vanel Sommaire Pourquoi tester? Catégories de tests Stratégies de test Pratique des test Caractéristiques des bons tests Gestions.
DIAGRAMME DE DEPLOIEMENT Exposé de: MBALLA MEKONGO Michèle MBOUNA FEUZE William SIEYADJEU Alex Lionel CHOPGWE Leonard NDUMATE Landry TIDJON Lionel.
Procédures Framework LDAP
Créer un site web avec WordPress
Cross-Plateform Cours JavaScript
POWER QUERY Les FONCTIONS.
Lire et manipuler du XML...
Les affichages pour les élèves :
Mener une activité.
SEO : Search Engine Optimization Référencement Naturel
ملخص Initiation à la sgbdr
Bases de données multimédia
Cours 12 : Les Web Services et UDDI Mars Version 1.0 -
Initiation aux bases de données et à la programmation événementielle
Table passage en caisse
Les Bases de données Définition Architecture d’un SGBD
AugerDb / SimDb Gestion des simulations Auger Java
Prendre des notes en classe:
Initiation aux bases de données et à la programmation événementielle
Références.
Visite guidée - session 2
Généralité sur les bases de données
Principes de programmation (suite)
Réalisation d'agents de surveillance Zephir
Master Réseaux et Systèmes Distribués (RSD) Algorithmique des systèmes
Présentation des EJB Enterprise Java Beans.
Notion De Gestion De Bases De Données
Création Et Modification De La Structure De La Base De Données
PROGRAMMATION INFORMATIQUE D’INGÉNIERIE II
Base de Données, RFID et Langage SQL
Informations vous concernant :
Programmation Android Bases De Données, SQL-lite
Formation sur les bases de données relationnelles.
Publipostage avec Word 2007
Développement d’applications interactives
Integrated Business intelligence
5 Analyse avec Designer d'Oracle
Assembleur, Compilateur et Éditeur de Liens
Les Sciences Physiques
Base de donnée de support
7 Contraintes d’intégrité en SQL
Méru - Bernadette Aubry
© Robert Godin. Tous droits réservés.
CAS AFPA Sprint n°1.
03- Evaluation Access 2003 Cette évaluation comporte des QCM (1 seule réponse) et des Zones à déterminer dans des copies d’écran.
Windows 7 NTFS.
20 Données semi-structurées et XML
9 Méthodes multidimentionnelles et représentation d'associations
État d’avancement REGARDS
Formation « Utiliser un site Internet école »
Service d ’Annuaire Netware pour Windows NT SABATIER Antoine IR5
© Robert Godin. Tous droits réservés.
Configurer Thingspeak
Transcription de la présentation:

Les ORMs ● Faire coexister le monde relationnel et objet

Plan ● Pour la pratique ● Séparation en couches ● Accès aux données ● Idée de base ● Les problèmes ● Les avantages ● Exemples

Pour la pratique ● Un blog tout simple basé « 2 pages » : ● une affichera un article ● une affichera un tag hébergé sur un serveur http

Pour la pratique ● Un blog tout simple

Séparation en couches ● Le modèle à 3 couches ● Avantages : ● Compréhensibilité ● Maintenabilité ● Réutilisabilité ●...

Accès aux données ● ● Métier / objet ● SGBDR / relationnel

Idée de base Pattern CRUD (Create, Read, Update, Delete) Objets persistants

Idée de base ● -- Structure de la table Articles ● CREATE TABLE Article ( ● ID int(11) NOT NULL auto_increment, ● Title varchar(100) NOT NULL, ● Content mediumtext NOT NULL, ● PRIMARY KEY (ID) ● ); ● -- Structure de la table Tags ● CREATE TABLE Tag ( ● ID int(11) NOT NULL auto_increment, ● Name varchar(100) NOT NULL, ● Description varchar(500) default NULL, ● PRIMARY KEY (ID) ● ); ● -- Structure de la table TagsArticles ● CREATE TABLE TagArticle ( ● IdArticle int(11) NOT NULL default '0', ● IdTag int(11) NOT NULL default '0', ● PRIMARY KEY (IdArticle,IdTag) ● );

Idée de base ● Une classe correspond à une table ● Un attribut correspond à un champ ● => Facile de faire un petit automate qui « fabrique » les requêtes ●

Les problèmes ● Les 2 mondes sont différents : ● 1 relation donne 1 ou 2 références

Les problèmes ● Les 2 mondes sont différents : ● 1 relation (0,n) donne 1 liste ou tableau

Les problèmes ● Les 2 mondes sont différents : ● Relation (n,n) donne deux listes ou 1 container à double entrée.

Les problèmes ● Les 2 mondes sont différents : ● Pas d'héritage en relationnel ● => Solution à 1 ou N tables

Les problèmes ● Un début de solution : ● ● Créer un nouvel objet ● Récupérer les attributs simples ● ● Récupérer les attributs « composés » ● ● Retourner l'objet

Les problèmes ● Cohérence entre objet en mémoire et contenu base de données : ● Un id en BDD donne un et un seul objet en mémoire ● Exemple : ● my $Tag1 = Metier::Tag->retrieve(1); ●... ● my $Tag2 = Metier::Tag->retrieve(1);

Les problèmes ● Cohérence entre objet en mémoire et contenu base de données : ● Si la BDD est partagée par plusieurs applications ● Si un objet est détruit ● Si un objet est partagé et modifié

Les problèmes ● Le chargement des objets : ● Minimiser le nombre de requêtes

Les problèmes ● Le chargement des objets :

Les problèmes ● Le chargement des objets : ● Lazy fetching (chargement à la demande) et les architectures state less ● Chargement complet et architectures avec cache

Les problèmes ● Parser un graphe d'objets :

Les avantages ● Racine du problème ● Les problèmes cités ne dépendent pas directement des ORMs mais des différences entre le monde objet et relationnel

Les avantages ● Plus besoin d'écrire de requêtes ● MAIS ATTENTION ● ELLES EXISTENT TOUJOURS !

Les avantages ● Incite aux bonnes pratiques ● Toujours mieux que le mélange de code d'extraction / traitement / présentation

Les avantages ● Outils libres et partagés ● Fruit de l'expérience de plusieurs personnes ● Continuent d'évoluer ● => Mieux qu'un outil bricolé pour ses besoins sur un coin de table.

Les avantages ● Indépendances ● du code d'accès aux données par rapport aux autres couches ● (dans certaines limites) par rapport au SGBD utilisé.

ORM libres ● Java : Hibernate, … ●.Net : NHibernate, … ● PHP : ezpdo, … ● Perl : Class::DBi, Tamgram, … ● Python : SQLAlchemy, Django ORM ●...

Questions ● Questions ?

Exemples ● Le petit blog avec Class::DBI et HTML::Template

Questions ● Questions ?