SlideShare una empresa de Scribd logo
1 de 47
Mapping objet relationnel Mitsuru FURUTA – Microsoft France mitsufu@microsoft.com http://blogs.microsoft.fr/mitsufu
Objectifs de la présentation C’est une présentation technique ! Appréhender les concepts Comprendre les problématiques Etre capable d’évaluer un produit Mettre en œuvre les principes fondamentaux sous forme de courtes démos Pas de présentation de produit Pas de parti pris Pas de LINQ… C’est une présentation technique !
Mapping objet relationnel Introduction Modélisation Architecture Fonctionnalités attendues de la couche objet Productivité MySolution: DSMap, un DataSet objet… La pause ? Quelle pause ?
Introduction Enjeux et problématiques Database != objects Architecture multi-couche: DAL, business, présentation Est-il possible d’automatiser la DAL ? Amener la persistance aux objets métiers Modélisation Recherche du modèle unique Requêtage Tuer le SQL Implémentations Outils ou framework ? Modèle intrusif ou pas Solutions souvent techniques Génération de code: templates dynamiques, CodeDom Abstraction: proxy dynamique, tissage
Introduction Idéal ? Le pur mapping O/R ne requiert aucun prérequis ni de la part de la base ni de la part de la couche objet. Il assure le lien entre les deux quelques soient les modèles. La solution assure en général l’accès à la base et la création automatiques des objets (classFactory). Les solutions sont en général riches mais coûteuses en ressources et en performances. Data base Objects Mapping O/R
Introduction Réalité De nombreuses solutions ont le parti pris de se baser soit sur la base soit sur les objets.  Les informations de mapping accompagnent alors le modèle choisi et servent à générer le modèle opposée (la base ou les objets) Ces modèles s’utilisent dans la phase de développement. Ils offrent un meilleur niveau de performance en contre partie d’un certain nombre de restrictions sur le modèle généré  Data base Objects Mapping O/R Infos de mapping Infos de mapping
Etat de l’art: les générateurs Database Centric: type Olymars Générateur Développement Exécution Data base Objects Infos de mapping
Etat de l’art: les générateurs Object Centric: type DTM (Evaluant) Générateur Développement Exécution Data base Objects Infos de mapping
Que recherchons nous vraiment ? Automatisation de la DAL Performance Consommation mémoire Productivité Outil de conception Abstraction de la base Gestion du changement ? Constat ,[object Object]
Nous savons que cette couche est déterminante
Beaucoup de solutions et beaucoup de polémiques,[object Object]
Modélisation Base de données Tables, colonnes, types simples Clés: primaires, étrangères, composites, indexes Relations Héritage Objets Classes, champs, propriétés Compositions (types complexes), portées Relations Héritage: relationnel ou non Modèle physique et conceptuel Les objets plus proches du modèle conceptuel
Demo …avec des objets
Architecture Organisation en couches DAL: data abstraction layer Business/Rules: couche métier Présentation: interface utilisateur (windows/web, autre) Distribution Possibilité de distribuer la couche DAL: choix complexe et déterminant Choix d’un modèle communiquant (MarshalByRef) Choix d’un modèle externe: sérialisation personnalisée ou génération d’un modèle communiquant Cette possibilité est souvent ignorée. Il devient pourtant rapidement tentant d’offrir cette couche basse de l’architecture au reste d’un modèle distribué Il est important de poser cette question au plus tôt car les contraintes sont nombreuses (sérialisation, cache distribué, threadsafe ?, sessions, transactions « mémoire »)
Architecture Modèles d’implémentation Modèle répétitif Chaque couche définit ses objets/interfaces: Avantages: indépendance totale Inconvénients: gourmand et complexe Modèle navigant Les différentes couches d’échangent un unique objet persistant Avantages: un seul objet à concevoir, pas de duplication mémoire, simple Inconvénients: dépendance entre les couches (l’abstraction via des interfaces permet au moins de libérer la dépendance binaire) Enjeux Concevoir dès la phase de définition d’architecture la nature précise de cette couche La possibilité de rendre les objets distribuables ainsi que les choix de dépendance (interfaces, portées) sont souvent des contraintes importantes d’une architecture d’implémentation.
Demo Organisation en couches
Fonctionnalités attendues de la couche objet Données Relations/Navigation Requêtes Transaction Cache Mise en œuvre
Fonctionnalités attendues de la couche objet:Données Gestion de la nullité: data == System.DBNull.Value ? Object: boxing/unboxing (non typé) SqlTypes Nullables: int? Projection variable Associer des chargements de colonnes variables dans vers une même classe: « SELECT FIELD1, FIELD2,…, FIELDN FROM… » Le « SELECT * » n’est pas toujours faisable (données trop grandes, blob), modifier le modèle n’est pas la solution Versionning de données Pouvoir jongler avec plusieurs jeux de données d’un même objet: AcceptChanges/RejectChanges
Demo Gestion de la nullité
Demo Versionning
Fonctionnalités attendues de la couche objet:Données Suivi des modifications Mettre en œuvre un moyen de tracer toutes les modifications sur les objets persistants: Notification au niveau des propriétés: pattern « PropertyNameChanged », INotifyPropertyChanged Notification sur les collections: CRUD (Create, Update, Delete) Le système est coûteux et non générique même s’il y a un mieux avec INotifyPropertyChanged (.Net 2.0) Databinding En WinForms ou WebForms Le mapping objet relationnel tente d’automatiser la DAL, essayons de ne pas perdre le databinding ! Respect des interfaces de binding: IList, IBindingList, etc…
Demo Suivi des changements
Fonctionnalités attendues de la couche objet:Relations/Navigation Navigation Chargements en cascade LazzyLoading Chargement à la demande lors de la navigation: client.Orders[0].Date Paramétrage Collections Chaînage des appels entre collections et éléments Intégrité Profiter des informations relationnelles de mapping pour valider l’intégrité d’un graphe d’objet (de nombreuses notifications sont alors nécessaires)
Fonctionnalités attendues de la couche objet:Requêtes Génération automatiques des requêtes CRUD Dynamique: à la demande Statique: lors de la génération (si le modèle le propose) Problématiques Performance ? Procédures stockées, vues ? Accès total à la vue physique de la base de données: sécurité ? Sémantique Avoir un langage unique pour requêter en mémoire parmi les objets ou vers la base de données grâce aux informations de mapping: OQL ? XPath ? Linq ? 
Fonctionnalités attendues de la couche objet:Transaction Possibilité de travailler de manière transactionnelle sur un graphe d’objets persistants Notion de session nécessaire même dans un environnement non distribué Isolation des modifications par client (idem base de données) Implémentation des actions Commit et Rollback sur le graphe Nouveauté Profiter du namespace System.Transaction de .Net 2.0 Exemple de dataset transactionnel: http://www.techheadbrothers.com/DesktopDefault.aspx?tabindex=1&tabid=7&AId=120
Fonctionnalités attendues de la couche objet:Cache Les solutions de mapping O/R imposent par définition le mode déconnecté Créer ou ne pas recréer un objet déjà chargé ? Avantages et inconvénients Une ClasseFactory facilite normalement le branchement d’un cache d’objet (unicité de la création) Définir les données du cache, sa stratégie Versionning Exemple de mise en œuvre A la limite du garbage collector
Demo Mise en œuvre d’une solution de cache
Fonctionnalités attendues de la couche objet:Mise en œuvre Mapping Par attributs Avantages: lié au code, intégrité Inconvénients: lié au code Par fichier externe Avantages: indépendance du code, possibilité de fournir plusieurs versions Inconvénients: pas intègre Ajout de fonctionnalités Par classe partielle: facile mais non objet Par héritage: classe de base AOP: Dynamique, par interception: MarshalByRef Par tissage: AOP
Demo Interception de méthode: MarshalByRef
Demo Premier mapping
Productivité Outils Externalisation des informations: mapping, méta-données Générateurs: de schémas de base de données, de classes Conception visuelle Extensibilité de Visual Studio Addins Wizards Designers Project & item templates
MySolution: DSMap, un DataSet objet ?!?! Pourquoi développer sa propre solution: Appréhender la difficulté ? Mettre en place une solution originale ? Etre plus apte à juger les produits existants ? Conclure qu’il vaut mieux utiliser une solution du marché ? Coller au mieux à ses besoins ? Vous faire partager l’expérience Se coller des cernes la veille d’une présentation technique rue de l’Université ?
Solution proposée : objectifs Avoir une solution indépendante de la source de données Etre proche de la performance et de la consommation mémoire d’un modèle RAD avec chargement direct dans un DataSet Conserver les fonctionnalités de « DataBinding » et d’utilisation en mode « design » Fournir à la couche métier une unique interface d’accès aux données entièrement objet
Solution proposée : avantages Solution entièrement .Net car s’appuyant sur les DataSets. Modèle indépendant de la source de données (base, xml, mémoire). Chargement unique des données en mémoire dans un DataSet, le reste des classes persistantes offrant uniquement des accesseurs.
Solution proposée : avantages Création entièrement dynamique des collections et des éléments lors d’un parcours d’un graphe d’objets. Plusieurs modes de création automatique des objets : systématique, cache. Avoir des accesseurs non publics, en lecture, écriture ou lecture/écriture
Solution proposée : avantages Charger un nombre de colonnes variable dans un même objet mappé Support du foreach pour les collections Support du DataBinding des objets et des collections Support du binding complexe vers les propriétés et les sous-propriétés d’un objet persistant (DataMember)
Solution proposée : avantages ,[object Object]
Support des collections hétérogènes avec classes héritées
Mises à jours vers la base (Create, Update, Delete) via les fonctionnalités classiques des DataSets (requêtes auto-générées ou personnalisées),[object Object]
Demo Rappels
Solution proposée : architecture Infos mapping Commands,  DataAdapters Infos mapping RelationalDataAdapter CRUD DataMapping Infos mapping ,[object Object]
Par codeIDBContext DBContext IDataSetProvider IAutoUpdate Mauvaise nouvelle IL FAUT CODER !!! Data base Xml DataSet Objects Mémoire SqlDBContext OracleDBContext ADODBContext
DataTable DataSet Solution proposée : architecture DataClassCollection DataClass Property DataTable Data source DataTable DataView Field DataRowView (Client) (Client.Nom) (Clients[])
Solution proposée : architecture dataView[] DataRowView DataClass IList.this[int index] DataRowView DataRowView Réécriture de l’interface IList afin de retourner une instance de DataClass au lieu de DataRowView. class Client : DataRowView row [DataClass(«ID»)] class ClientCollection : DataClassCollection, IEnumerable, ICollection, IList Client this[int index] {   get {     return GetItem(index);   } } DataClass String Nom {   get {     return row[«NAME»];   } }
Solution proposée :mapping simple Client : DataClass String Nom {   get    {     return (string) row[«NAME»];   }   set   {     row[«NAME»] = value;   } }
Solution proposée :mapping de relations Client : DataClass [DataClassRelation("customerid", "customerid")] public CommandeCollection Commandes  {   get   {      return (CommandeCollection) this.relations["Commandes"];   } } [DataClassRelation(“(customerid=@custumerid) and (state = 1)")] public CommandeCollection CommandesLivrees  {   get   {      return (CommandeCollection) this.relations["Commandes"];   } }
Solution proposée :mapping de références Commande : DataClass [DataClassReference("customerid", "customerid")] public Client Client  {     get { return (Client) this.references["Client"]; } }

Más contenido relacionado

Destacado

Ip forum smart cityz
Ip forum   smart cityzIp forum   smart cityz
Ip forum smart cityzLoïc Bar
 
IAIM General Assembley 2012 - Portugal
IAIM General Assembley 2012 - PortugalIAIM General Assembley 2012 - Portugal
IAIM General Assembley 2012 - PortugalRuby Tuesday
 
PUERTAS BLANCAS
PUERTAS BLANCASPUERTAS BLANCAS
PUERTAS BLANCASelilucas
 
Ecoparc integral
Ecoparc integral Ecoparc integral
Ecoparc integral guest1d76a0
 
Animation De Groupe
Animation De GroupeAnimation De Groupe
Animation De Groupemagju
 
Internet mobile, communication et apps
Internet mobile, communication et appsInternet mobile, communication et apps
Internet mobile, communication et appsAntoine Dubuquoy
 
SEO : 10 commandements pour être bien référencé dans Google
SEO : 10 commandements pour être bien référencé dans GoogleSEO : 10 commandements pour être bien référencé dans Google
SEO : 10 commandements pour être bien référencé dans GoogleIlle & Vilaine Tourisme
 
Le cirque du blanc
Le cirque du blancLe cirque du blanc
Le cirque du blancpapybrico
 
Le macareux moine (1)
Le  macareux moine (1)Le  macareux moine (1)
Le macareux moine (1)miriamceja
 
Media Sociaux_MFC 010310
Media Sociaux_MFC 010310Media Sociaux_MFC 010310
Media Sociaux_MFC 010310mariefrancecote
 
Marketing pour le porteur de projet
Marketing pour le porteur de projetMarketing pour le porteur de projet
Marketing pour le porteur de projetFred Colantonio
 
Prise en main de Dreamweaver
Prise en main de DreamweaverPrise en main de Dreamweaver
Prise en main de DreamweaverAbdoulaye Dieng
 

Destacado (20)

Ip forum smart cityz
Ip forum   smart cityzIp forum   smart cityz
Ip forum smart cityz
 
IAIM General Assembley 2012 - Portugal
IAIM General Assembley 2012 - PortugalIAIM General Assembley 2012 - Portugal
IAIM General Assembley 2012 - Portugal
 
PUERTAS BLANCAS
PUERTAS BLANCASPUERTAS BLANCAS
PUERTAS BLANCAS
 
Ecoparc integral
Ecoparc integral Ecoparc integral
Ecoparc integral
 
Animation De Groupe
Animation De GroupeAnimation De Groupe
Animation De Groupe
 
Le passé composé (pp tminimizer)
Le passé composé (pp tminimizer)Le passé composé (pp tminimizer)
Le passé composé (pp tminimizer)
 
Internet mobile, communication et apps
Internet mobile, communication et appsInternet mobile, communication et apps
Internet mobile, communication et apps
 
SEO : 10 commandements pour être bien référencé dans Google
SEO : 10 commandements pour être bien référencé dans GoogleSEO : 10 commandements pour être bien référencé dans Google
SEO : 10 commandements pour être bien référencé dans Google
 
Tour de Copenhague
Tour de CopenhagueTour de Copenhague
Tour de Copenhague
 
Le cirque du blanc
Le cirque du blancLe cirque du blanc
Le cirque du blanc
 
Le macareux moine (1)
Le  macareux moine (1)Le  macareux moine (1)
Le macareux moine (1)
 
Media Sociaux_MFC 010310
Media Sociaux_MFC 010310Media Sociaux_MFC 010310
Media Sociaux_MFC 010310
 
Semana03 upao
Semana03 upaoSemana03 upao
Semana03 upao
 
Le quartier vert
Le quartier vertLe quartier vert
Le quartier vert
 
Open data sc2012
Open data sc2012Open data sc2012
Open data sc2012
 
Marketing pour le porteur de projet
Marketing pour le porteur de projetMarketing pour le porteur de projet
Marketing pour le porteur de projet
 
Tecnologia
TecnologiaTecnologia
Tecnologia
 
Joshua bell violoniste.pps
Joshua bell violoniste.ppsJoshua bell violoniste.pps
Joshua bell violoniste.pps
 
Prise en main de Dreamweaver
Prise en main de DreamweaverPrise en main de Dreamweaver
Prise en main de Dreamweaver
 
France
FranceFrance
France
 

Similar a Mappingobjetrelationnel[1]

Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven DesignDNG Consulting
 
10-Cours de Géniel Logiciel
10-Cours de Géniel Logiciel10-Cours de Géniel Logiciel
10-Cours de Géniel Logiciellauraty3204
 
SSAS 2012 : Multidimensionnel et tabulaire au banc d'essai
SSAS 2012 : Multidimensionnel et tabulaire au banc d'essaiSSAS 2012 : Multidimensionnel et tabulaire au banc d'essai
SSAS 2012 : Multidimensionnel et tabulaire au banc d'essaiMicrosoft Technet France
 
Introduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMAIntroduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMALoic Yon
 
MVVM de A à Z
MVVM de A à ZMVVM de A à Z
MVVM de A à ZMicrosoft
 
SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs Microsoft
 
La caisse à outils de la visualisation d'informations
La caisse à outils de la visualisation d'informationsLa caisse à outils de la visualisation d'informations
La caisse à outils de la visualisation d'informationsChristopheTricot
 
Réussir son projet Drupal
Réussir son projet DrupalRéussir son projet Drupal
Réussir son projet DrupalAdyax
 
SAS Forum Soft Computing Théâtre
SAS Forum Soft Computing ThéâtreSAS Forum Soft Computing Théâtre
SAS Forum Soft Computing ThéâtreSoft Computing
 
Restitution des données environnement Microsoft & data visualization : panel ...
Restitution des données environnement Microsoft & data visualization : panel ...Restitution des données environnement Microsoft & data visualization : panel ...
Restitution des données environnement Microsoft & data visualization : panel ...Microsoft
 
Environnements & Développements
Environnements & DéveloppementsEnvironnements & Développements
Environnements & DéveloppementsPaulin CHOUDJA
 
cours06-nosql.pdf
cours06-nosql.pdfcours06-nosql.pdf
cours06-nosql.pdfhbadir
 
Km400 g formation-ibm-infosphere-advanced-datastage
Km400 g formation-ibm-infosphere-advanced-datastageKm400 g formation-ibm-infosphere-advanced-datastage
Km400 g formation-ibm-infosphere-advanced-datastageCERTyou Formation
 
No Sql - Olivier Mallassi - September 2010
No Sql - Olivier Mallassi - September 2010No Sql - Olivier Mallassi - September 2010
No Sql - Olivier Mallassi - September 2010JUG Lausanne
 
Discovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDiscovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDenodo
 
Azure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaAzure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaMicrosoft
 
Entity_framework_db first
Entity_framework_db firstEntity_framework_db first
Entity_framework_db firstZineb ELGARRAI
 
Les micro orm, alternatives à entity framework
Les micro orm, alternatives à entity frameworkLes micro orm, alternatives à entity framework
Les micro orm, alternatives à entity frameworkMSDEVMTL
 
Design applicatif avec symfony2
Design applicatif avec symfony2Design applicatif avec symfony2
Design applicatif avec symfony2RomainKuzniak
 

Similar a Mappingobjetrelationnel[1] (20)

Introduction au Domain Driven Design
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven Design
 
10-Cours de Géniel Logiciel
10-Cours de Géniel Logiciel10-Cours de Géniel Logiciel
10-Cours de Géniel Logiciel
 
SSAS 2012 : Multidimensionnel et tabulaire au banc d'essai
SSAS 2012 : Multidimensionnel et tabulaire au banc d'essaiSSAS 2012 : Multidimensionnel et tabulaire au banc d'essai
SSAS 2012 : Multidimensionnel et tabulaire au banc d'essai
 
Introduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMAIntroduction à l'objet - Deuxième année ISIMA
Introduction à l'objet - Deuxième année ISIMA
 
MVVM de A à Z
MVVM de A à ZMVVM de A à Z
MVVM de A à Z
 
Single Page Application
Single Page ApplicationSingle Page Application
Single Page Application
 
SQL Server et les développeurs
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs
 
La caisse à outils de la visualisation d'informations
La caisse à outils de la visualisation d'informationsLa caisse à outils de la visualisation d'informations
La caisse à outils de la visualisation d'informations
 
Réussir son projet Drupal
Réussir son projet DrupalRéussir son projet Drupal
Réussir son projet Drupal
 
SAS Forum Soft Computing Théâtre
SAS Forum Soft Computing ThéâtreSAS Forum Soft Computing Théâtre
SAS Forum Soft Computing Théâtre
 
Restitution des données environnement Microsoft & data visualization : panel ...
Restitution des données environnement Microsoft & data visualization : panel ...Restitution des données environnement Microsoft & data visualization : panel ...
Restitution des données environnement Microsoft & data visualization : panel ...
 
Environnements & Développements
Environnements & DéveloppementsEnvironnements & Développements
Environnements & Développements
 
cours06-nosql.pdf
cours06-nosql.pdfcours06-nosql.pdf
cours06-nosql.pdf
 
Km400 g formation-ibm-infosphere-advanced-datastage
Km400 g formation-ibm-infosphere-advanced-datastageKm400 g formation-ibm-infosphere-advanced-datastage
Km400 g formation-ibm-infosphere-advanced-datastage
 
No Sql - Olivier Mallassi - September 2010
No Sql - Olivier Mallassi - September 2010No Sql - Olivier Mallassi - September 2010
No Sql - Olivier Mallassi - September 2010
 
Discovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data VirtualizationDiscovery Session France: Atelier découverte de la Data Virtualization
Discovery Session France: Atelier découverte de la Data Virtualization
 
Azure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmediaAzure Camp 9 Décembre - slides session développeurs webmedia
Azure Camp 9 Décembre - slides session développeurs webmedia
 
Entity_framework_db first
Entity_framework_db firstEntity_framework_db first
Entity_framework_db first
 
Les micro orm, alternatives à entity framework
Les micro orm, alternatives à entity frameworkLes micro orm, alternatives à entity framework
Les micro orm, alternatives à entity framework
 
Design applicatif avec symfony2
Design applicatif avec symfony2Design applicatif avec symfony2
Design applicatif avec symfony2
 

Último

Formation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptxFormation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptxrajaakiass01
 
Cours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfCours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfssuserc72852
 
Chapitre 2 du cours de JavaScript. Bon Cours
Chapitre 2 du cours de JavaScript. Bon CoursChapitre 2 du cours de JavaScript. Bon Cours
Chapitre 2 du cours de JavaScript. Bon Coursebenezerngoran
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film françaisTxaruka
 
Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaireTxaruka
 
Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfAmgdoulHatim
 
Les roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptxLes roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptxShinyaHilalYamanaka
 
Computer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxComputer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxRayane619450
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfachrafbrahimi1
 
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...Technologia Formation
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.Txaruka
 
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projetFormation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projetJeanYvesMoine
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...Nguyen Thanh Tu Collection
 
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxikospam0
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film françaisTxaruka
 
L application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptxL application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptxhamzagame
 
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfCOURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfabatanebureau
 
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...Faga1939
 

Último (18)

Formation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptxFormation qhse - GIASE saqit_105135.pptx
Formation qhse - GIASE saqit_105135.pptx
 
Cours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdfCours Préparation à l’ISO 27001 version 2022.pdf
Cours Préparation à l’ISO 27001 version 2022.pdf
 
Chapitre 2 du cours de JavaScript. Bon Cours
Chapitre 2 du cours de JavaScript. Bon CoursChapitre 2 du cours de JavaScript. Bon Cours
Chapitre 2 du cours de JavaScript. Bon Cours
 
La nouvelle femme . pptx Film français
La   nouvelle   femme  . pptx  Film françaisLa   nouvelle   femme  . pptx  Film français
La nouvelle femme . pptx Film français
 
Apolonia, Apolonia.pptx Film documentaire
Apolonia, Apolonia.pptx         Film documentaireApolonia, Apolonia.pptx         Film documentaire
Apolonia, Apolonia.pptx Film documentaire
 
Bilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdfBilan énergétique des chambres froides.pdf
Bilan énergétique des chambres froides.pdf
 
Les roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptxLes roches magmatique géodynamique interne.pptx
Les roches magmatique géodynamique interne.pptx
 
Computer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptxComputer Parts in French - Les parties de l'ordinateur.pptx
Computer Parts in French - Les parties de l'ordinateur.pptx
 
Cours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdfCours ofppt du Trade-Marketing-Présentation.pdf
Cours ofppt du Trade-Marketing-Présentation.pdf
 
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
Conférence Sommet de la formation 2024 : Développer des compétences pour la m...
 
Boléro. pptx Film français réalisé par une femme.
Boléro.  pptx   Film   français   réalisé  par une  femme.Boléro.  pptx   Film   français   réalisé  par une  femme.
Boléro. pptx Film français réalisé par une femme.
 
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projetFormation échiquéenne jwhyCHESS, parallèle avec la planification de projet
Formation échiquéenne jwhyCHESS, parallèle avec la planification de projet
 
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
GIÁO ÁN DẠY THÊM (KẾ HOẠCH BÀI DẠY BUỔI 2) - TIẾNG ANH 6, 7 GLOBAL SUCCESS (2...
 
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptxCopie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
Copie de Engineering Software Marketing Plan by Slidesgo.pptx.pptx
 
Sidonie au Japon . pptx Un film français
Sidonie    au   Japon  .  pptx  Un film françaisSidonie    au   Japon  .  pptx  Un film français
Sidonie au Japon . pptx Un film français
 
L application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptxL application de la physique classique dans le golf.pptx
L application de la physique classique dans le golf.pptx
 
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdfCOURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
COURS SVT 3 EME ANNEE COLLEGE 2EME SEM.pdf
 
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
L'ÉVOLUTION DE L'ÉDUCATION AU BRÉSIL À TRAVERS L'HISTOIRE ET LES EXIGENCES DE...
 

Mappingobjetrelationnel[1]

  • 1. Mapping objet relationnel Mitsuru FURUTA – Microsoft France mitsufu@microsoft.com http://blogs.microsoft.fr/mitsufu
  • 2. Objectifs de la présentation C’est une présentation technique ! Appréhender les concepts Comprendre les problématiques Etre capable d’évaluer un produit Mettre en œuvre les principes fondamentaux sous forme de courtes démos Pas de présentation de produit Pas de parti pris Pas de LINQ… C’est une présentation technique !
  • 3. Mapping objet relationnel Introduction Modélisation Architecture Fonctionnalités attendues de la couche objet Productivité MySolution: DSMap, un DataSet objet… La pause ? Quelle pause ?
  • 4. Introduction Enjeux et problématiques Database != objects Architecture multi-couche: DAL, business, présentation Est-il possible d’automatiser la DAL ? Amener la persistance aux objets métiers Modélisation Recherche du modèle unique Requêtage Tuer le SQL Implémentations Outils ou framework ? Modèle intrusif ou pas Solutions souvent techniques Génération de code: templates dynamiques, CodeDom Abstraction: proxy dynamique, tissage
  • 5. Introduction Idéal ? Le pur mapping O/R ne requiert aucun prérequis ni de la part de la base ni de la part de la couche objet. Il assure le lien entre les deux quelques soient les modèles. La solution assure en général l’accès à la base et la création automatiques des objets (classFactory). Les solutions sont en général riches mais coûteuses en ressources et en performances. Data base Objects Mapping O/R
  • 6. Introduction Réalité De nombreuses solutions ont le parti pris de se baser soit sur la base soit sur les objets. Les informations de mapping accompagnent alors le modèle choisi et servent à générer le modèle opposée (la base ou les objets) Ces modèles s’utilisent dans la phase de développement. Ils offrent un meilleur niveau de performance en contre partie d’un certain nombre de restrictions sur le modèle généré Data base Objects Mapping O/R Infos de mapping Infos de mapping
  • 7. Etat de l’art: les générateurs Database Centric: type Olymars Générateur Développement Exécution Data base Objects Infos de mapping
  • 8. Etat de l’art: les générateurs Object Centric: type DTM (Evaluant) Générateur Développement Exécution Data base Objects Infos de mapping
  • 9.
  • 10. Nous savons que cette couche est déterminante
  • 11.
  • 12. Modélisation Base de données Tables, colonnes, types simples Clés: primaires, étrangères, composites, indexes Relations Héritage Objets Classes, champs, propriétés Compositions (types complexes), portées Relations Héritage: relationnel ou non Modèle physique et conceptuel Les objets plus proches du modèle conceptuel
  • 14. Architecture Organisation en couches DAL: data abstraction layer Business/Rules: couche métier Présentation: interface utilisateur (windows/web, autre) Distribution Possibilité de distribuer la couche DAL: choix complexe et déterminant Choix d’un modèle communiquant (MarshalByRef) Choix d’un modèle externe: sérialisation personnalisée ou génération d’un modèle communiquant Cette possibilité est souvent ignorée. Il devient pourtant rapidement tentant d’offrir cette couche basse de l’architecture au reste d’un modèle distribué Il est important de poser cette question au plus tôt car les contraintes sont nombreuses (sérialisation, cache distribué, threadsafe ?, sessions, transactions « mémoire »)
  • 15. Architecture Modèles d’implémentation Modèle répétitif Chaque couche définit ses objets/interfaces: Avantages: indépendance totale Inconvénients: gourmand et complexe Modèle navigant Les différentes couches d’échangent un unique objet persistant Avantages: un seul objet à concevoir, pas de duplication mémoire, simple Inconvénients: dépendance entre les couches (l’abstraction via des interfaces permet au moins de libérer la dépendance binaire) Enjeux Concevoir dès la phase de définition d’architecture la nature précise de cette couche La possibilité de rendre les objets distribuables ainsi que les choix de dépendance (interfaces, portées) sont souvent des contraintes importantes d’une architecture d’implémentation.
  • 17. Fonctionnalités attendues de la couche objet Données Relations/Navigation Requêtes Transaction Cache Mise en œuvre
  • 18. Fonctionnalités attendues de la couche objet:Données Gestion de la nullité: data == System.DBNull.Value ? Object: boxing/unboxing (non typé) SqlTypes Nullables: int? Projection variable Associer des chargements de colonnes variables dans vers une même classe: « SELECT FIELD1, FIELD2,…, FIELDN FROM… » Le « SELECT * » n’est pas toujours faisable (données trop grandes, blob), modifier le modèle n’est pas la solution Versionning de données Pouvoir jongler avec plusieurs jeux de données d’un même objet: AcceptChanges/RejectChanges
  • 19. Demo Gestion de la nullité
  • 21. Fonctionnalités attendues de la couche objet:Données Suivi des modifications Mettre en œuvre un moyen de tracer toutes les modifications sur les objets persistants: Notification au niveau des propriétés: pattern « PropertyNameChanged », INotifyPropertyChanged Notification sur les collections: CRUD (Create, Update, Delete) Le système est coûteux et non générique même s’il y a un mieux avec INotifyPropertyChanged (.Net 2.0) Databinding En WinForms ou WebForms Le mapping objet relationnel tente d’automatiser la DAL, essayons de ne pas perdre le databinding ! Respect des interfaces de binding: IList, IBindingList, etc…
  • 22. Demo Suivi des changements
  • 23. Fonctionnalités attendues de la couche objet:Relations/Navigation Navigation Chargements en cascade LazzyLoading Chargement à la demande lors de la navigation: client.Orders[0].Date Paramétrage Collections Chaînage des appels entre collections et éléments Intégrité Profiter des informations relationnelles de mapping pour valider l’intégrité d’un graphe d’objet (de nombreuses notifications sont alors nécessaires)
  • 24. Fonctionnalités attendues de la couche objet:Requêtes Génération automatiques des requêtes CRUD Dynamique: à la demande Statique: lors de la génération (si le modèle le propose) Problématiques Performance ? Procédures stockées, vues ? Accès total à la vue physique de la base de données: sécurité ? Sémantique Avoir un langage unique pour requêter en mémoire parmi les objets ou vers la base de données grâce aux informations de mapping: OQL ? XPath ? Linq ? 
  • 25. Fonctionnalités attendues de la couche objet:Transaction Possibilité de travailler de manière transactionnelle sur un graphe d’objets persistants Notion de session nécessaire même dans un environnement non distribué Isolation des modifications par client (idem base de données) Implémentation des actions Commit et Rollback sur le graphe Nouveauté Profiter du namespace System.Transaction de .Net 2.0 Exemple de dataset transactionnel: http://www.techheadbrothers.com/DesktopDefault.aspx?tabindex=1&tabid=7&AId=120
  • 26. Fonctionnalités attendues de la couche objet:Cache Les solutions de mapping O/R imposent par définition le mode déconnecté Créer ou ne pas recréer un objet déjà chargé ? Avantages et inconvénients Une ClasseFactory facilite normalement le branchement d’un cache d’objet (unicité de la création) Définir les données du cache, sa stratégie Versionning Exemple de mise en œuvre A la limite du garbage collector
  • 27. Demo Mise en œuvre d’une solution de cache
  • 28. Fonctionnalités attendues de la couche objet:Mise en œuvre Mapping Par attributs Avantages: lié au code, intégrité Inconvénients: lié au code Par fichier externe Avantages: indépendance du code, possibilité de fournir plusieurs versions Inconvénients: pas intègre Ajout de fonctionnalités Par classe partielle: facile mais non objet Par héritage: classe de base AOP: Dynamique, par interception: MarshalByRef Par tissage: AOP
  • 29. Demo Interception de méthode: MarshalByRef
  • 31. Productivité Outils Externalisation des informations: mapping, méta-données Générateurs: de schémas de base de données, de classes Conception visuelle Extensibilité de Visual Studio Addins Wizards Designers Project & item templates
  • 32. MySolution: DSMap, un DataSet objet ?!?! Pourquoi développer sa propre solution: Appréhender la difficulté ? Mettre en place une solution originale ? Etre plus apte à juger les produits existants ? Conclure qu’il vaut mieux utiliser une solution du marché ? Coller au mieux à ses besoins ? Vous faire partager l’expérience Se coller des cernes la veille d’une présentation technique rue de l’Université ?
  • 33. Solution proposée : objectifs Avoir une solution indépendante de la source de données Etre proche de la performance et de la consommation mémoire d’un modèle RAD avec chargement direct dans un DataSet Conserver les fonctionnalités de « DataBinding » et d’utilisation en mode « design » Fournir à la couche métier une unique interface d’accès aux données entièrement objet
  • 34. Solution proposée : avantages Solution entièrement .Net car s’appuyant sur les DataSets. Modèle indépendant de la source de données (base, xml, mémoire). Chargement unique des données en mémoire dans un DataSet, le reste des classes persistantes offrant uniquement des accesseurs.
  • 35. Solution proposée : avantages Création entièrement dynamique des collections et des éléments lors d’un parcours d’un graphe d’objets. Plusieurs modes de création automatique des objets : systématique, cache. Avoir des accesseurs non publics, en lecture, écriture ou lecture/écriture
  • 36. Solution proposée : avantages Charger un nombre de colonnes variable dans un même objet mappé Support du foreach pour les collections Support du DataBinding des objets et des collections Support du binding complexe vers les propriétés et les sous-propriétés d’un objet persistant (DataMember)
  • 37.
  • 38. Support des collections hétérogènes avec classes héritées
  • 39.
  • 41.
  • 42. Par codeIDBContext DBContext IDataSetProvider IAutoUpdate Mauvaise nouvelle IL FAUT CODER !!! Data base Xml DataSet Objects Mémoire SqlDBContext OracleDBContext ADODBContext
  • 43. DataTable DataSet Solution proposée : architecture DataClassCollection DataClass Property DataTable Data source DataTable DataView Field DataRowView (Client) (Client.Nom) (Clients[])
  • 44. Solution proposée : architecture dataView[] DataRowView DataClass IList.this[int index] DataRowView DataRowView Réécriture de l’interface IList afin de retourner une instance de DataClass au lieu de DataRowView. class Client : DataRowView row [DataClass(«ID»)] class ClientCollection : DataClassCollection, IEnumerable, ICollection, IList Client this[int index] { get { return GetItem(index); } } DataClass String Nom { get { return row[«NAME»]; } }
  • 45. Solution proposée :mapping simple Client : DataClass String Nom { get { return (string) row[«NAME»]; } set { row[«NAME»] = value; } }
  • 46. Solution proposée :mapping de relations Client : DataClass [DataClassRelation("customerid", "customerid")] public CommandeCollection Commandes { get { return (CommandeCollection) this.relations["Commandes"]; } } [DataClassRelation(“(customerid=@custumerid) and (state = 1)")] public CommandeCollection CommandesLivrees { get { return (CommandeCollection) this.relations["Commandes"]; } }
  • 47. Solution proposée :mapping de références Commande : DataClass [DataClassReference("customerid", "customerid")] public Client Client { get { return (Client) this.references["Client"]; } }
  • 50. © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.