Le mapping objet relationnel. Introduction au mapping objet relationnel avec Nhibernate Cyril GRAUFFEL IR3 2009/2010



Documents pareils
Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Tutoriel d installation de Hibernate avec Eclipse

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

La persistance des données dans les applications : DAO, JPA, Hibernate... COMPIL 2010 francois.jannin@inp-toulouse.fr 1

Java DataBaseConnectivity

La gestion de la persistance avec Hibernate. Hibernate et la gestion de persistance. La gestion de la persistance (1/2) Introduction

Développement Web - Object Relational Mapping and Hibernate

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

OpenPaaS Le réseau social d'entreprise

Compte Rendu d intégration d application

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Accès aux bases de données

Introduction à JDBC. Accès aux bases de données en Java

les techniques d'extraction, les formulaires et intégration dans un site WEB

Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)

Application web de gestion de comptes en banques

CQP Développeur Nouvelles Technologies (DNT)

Outil de Demande de Backup Système

UE 8 Systèmes d information de gestion Le programme

Création d une application JEE

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

Les bases de données

Introduction à ElasticSearch

2 Chapitre 1 Introduction

Java et les bases de données: JDBC: Java DataBase Connectivity SQLJ: Embedded SQL in Java. Michel Bonjour

1. Installation d'un serveur d'application JBoss:

TP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.

Alfstore workflow framework Spécification technique

Notes de cours : bases de données distribuées et repliquées

Information utiles. webpage : Google+ : digiusto/

CREATION WEB DYNAMIQUE

MapReduce. Malo Jaffré, Pablo Rauzy. 16 avril 2010 ENS. Malo Jaffré, Pablo Rauzy (ENS) MapReduce 16 avril / 15

Extension SSO Java. Cette note technique décrit la configuration et la mise en œuvre du filtre de custom SSO Java.

PHP. PHP et bases de données

PostgreSQL. Formations. Calendrier... 14

Cours en ligne Développement Java pour le web

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Architecture N-Tier. Ces données peuvent être saisies interactivement via l interface ou lues depuis un disque. Application

TD sur JMS ) Qu est-ce qu un middleware orienté message (MOM)? Quelles différences faites-vous entre un MOM et JMS?

Présentation du module Base de données spatio-temporelles

Plateforme PAYZEN. Définition de Web-services

Bases de données et sites WEB Licence d informatique LI345

PROSOP : un système de gestion de bases de données prosopographiques

Les technologies du Big Data

Mise en place d'un serveur d'application SIG au Conseil général de Seine-et-Marne

Module BD et sites WEB

Notion de base de données

Accès à l'information XML par des requêtes XQuery au travers de son XSchema

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Auto-évaluation Aperçu de l architecture Java EE

4. SERVICES WEB REST 46

Introduction par l'exemple à Entity Framework 5 Code First

Bases de données relationnelles

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

SQL Parser XML Xquery : Approche de détection des injections SQL

La base de données XML exist. A. Belaïd

Technologies Web. Ludovic Denoyer Sylvain Lamprier Mohamed Amine Baazizi Gabriella Contardo Narcisse Nya. Université Pierre et Marie Curie

Architecture JEE. Objectifs attendus. Serveurs d applications JEE. Architectures JEE Normes JEE. Systèmes distribués

4. Utilisation d un SGBD : le langage SQL. 5. Normalisation

BASE DE DONNÉES XML NATIVE

QLIKVIEW ET LE BIG DATA

PHP 5. La base de données MySql. A. Belaïd 1

PHP 4 PARTIE : BASE DE DONNEES

Java et les bases de données

Notre Catalogue des Formations IT / 2015

PostgreSQL. Formations. SQL avancé Calendrier... 18

Devenez un véritable développeur web en 3 mois!

Bases Java - Eclipse / Netbeans

Bases de données et fournisseurs de contenu

COMPOSANTS DE L ARCHITECTURE D UN SGBD. Chapitre 1

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

Cours Bases de données

Patrons de Conception (Design Patterns)

COMPRENDRE L ARCHITECTURE DES WEB SERVICES REST. Amosse EDOUARD, Doctorant

Hala Skaf-Molli. Nancy-Université 14 mai 2007

SIO Page 1 de 5. Applications Web dynamiques. Prof. : Dzenan Ridjanovic Assistant : Vincent Dussault

Architectures d'intégration de données

CHAPITRE 1 ARCHITECTURE

Architectures Web Services RESTful

Big Data. Cyril Amsellem Consultant avant-vente. 16 juin Talend

Plan. Accès aux données dans le framework.net. ADO.NET Entity Framework LINQ ADO.NET ADO.NET. 1. ADO.NET Mode connecté Mode non connecté

Initiation aux bases de données (SGBD) Walter RUDAMETKIN

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Implémentation des SGBD

Bases de données avancées Introduction

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

CNAM Déploiement d une application avec EC2 ( Cloud Amazon ) Auteur : Thierry Kauffmann Paris, Décembre 2010

Java Naming and Directory Interface

Programmation en Java IUT GEII (MC-II1) 1

MISE EN PLACE D UNE ARCHITECTURE DE TYPE SOA POUR UN

Le langage SQL (première partie) c Olivier Caron

Corrigé des exercices sur les références

JADE : Java Agent DEvelopment framework. Laboratoire IBISC & Départ. GEII Université & IUT d Evry nadia.abchiche@ibisc.univ-evry.

Architecture Orientée Service, JSON et API REST

Cours Bases de données 2ème année IUT

Transcription:

Le mapping objet relationnel Introduction au mapping objet relationnel avec Nhibernate Cyril GRAUFFEL IR3 2009/2010

Plan de présentation 1. Le modèle relationnel et le modèle objet 2. Le Mapping Objet Relationnel (ORM) 3. Introduction à NHibernate 2

Le modèle relationnel et le modèle objet Les problèmes de correspondance entre le modèle objet et le modèle relationnel: Le modèle objet propose plus de fonctionnalités : L héritage, le polymorphisme Les relations entre deux entités sont différentes Les objets ne possèdent pas d identifiant unique contrairement au modèle relationnel 3

Le modèle relationnel et le modèle objet Pour accéder à la base de données : L API JDBC pour Java; ADO.NET pour.net; Inconvénients : Nécessite l écriture de nombreuses lignes de codes répétitives La liaison entre les objets et les tables est un travail de bas niveau 4

2. Le Mapping Objet Relationnel Plan : a. Définition b. Avantages / Inconvénients c. Les critères pour choisir un outil d. Les outils existants 5

Le Mapping Objet Relationnel Définition : Concept permettant de connecter un modèle objet à un modèle relationnel. Couche qui va interagir entre l application et la base de données. Pourquoi utiliser ce concept? Pas besoin de connaître l ensemble des tables et des champs de la base de données Faire abstraction de toute la partie SQL d une application. 6

Le Mapping Objet Relationnel Avantages / Inconvénients : Avantages : Gain de temps au niveau du développement d une application. Abstraction de toute la partie SQL. La portabilité de l application d un point de vue SGBD Inconvénients : L optimisation des outils proposés La difficulté à maîtriser les outils. 7

Le Mapping Objet Relationnel Les critères pour choisir un outil de mapping objet relationnel : La facilité du mapping des tables avec les classes, des champs avec les attributs. Les fonctionnalités de bases des modèles relationnel et objet. Les performances et optimisations proposées : gestion du cache, chargement différé. Les fonctionnalités avancées : gestion des sessions, des transactions. 8

Le Mapping Objet Relationnel Les différents outils existant : Python : SQLAlchemy Java : TopLink, Hibernate C# : Nhibernate, DLinq 9

Introduction à NHibernate a. Présentation de l outil b. La mise en place de Nhibernate a. Le fichier de configuration b. Le mapping c. Gestion des sessions et des transactions d. Exemple c. Fonctions avancées L héritage, gestion de performances, langage de requêtes 10

Présentation de l outil ORM pour C#; Issue de l ORM pour Java : Hibernate; Historique : 2005 2006 : projet de JBoss. Depuis 2006 : le support est assuré par la communauté NHibernate. 11

Présentation de l outil Architecture : APPLICATION Propriétés NHibernate NHibernate XML Mapping Base de données 12

La mise en place de NHibernate Comment ça marche? 1 fichier de configuration qui regroupe l ensemble des informations de la base de données. 1 fichier xml par objet, représentant la correspondance entre la table et l objet. 13

La mise en place de NHibernate Le fichier de configuration regroupe l ensemble des informations de la base de données : Le type de la base de données; Le type de langage SQL à générer pour dialoguer avec la base de données; La chaine de connexion à la base de données; 14

La mise en place de NHibernate Exemple : <?xml version="1.0" encoding="utf-8"?> <configuration> <configsections> <section name="hibernate-configuration" type="nhibernate.cfg.configurationsectionhandler, NHibernate" /> </configsections> <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> <session-factory> <property name="connection.provider"> NHibernate.Connection.DriverConnectionProvider </property> <property name="connection.driver_class"> NHibernate.Driver.MySqlDataDriver </property> 15

La mise en place de NHibernate <property name="connection.connection_string"> Database=nhibernate;Data Source=127.0.0.1;User Id=root;Password= </property> <property name="dialect"> NHibernate.Dialect.MySQLDialect </property> <property name="proxyfactory.factory_class"> NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle </property> <property name="show_sql">true</property> </session-factory> </hibernate-configuration> </configuration> 16

La mise en place de NHibernate Le mapping fait l association entre un objet et une table de la base de données. Plusieurs étapes : Création de la classe de l objet; [Objet].cs Création du fichier de mapping; [Objet].hbm.xml; 17

La mise en place de NHibernate Création de la classe : Parking.cs public class Parking { private int id; private string name; //Constrcuteur. public virtual int Id { get { return id; } set { id = value; } } } public virtual string Name { get { return name; } set { name = value; } } 18

La mise en place de NHibernate Création du fichier de mapping : Parking.hbm.xml <?xml version="1.0" encoding="utf-8"?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> <class name="test.parking, Test" table="parking > <id name="id" column="id" type="int32"> <generator class="native" /> </id> <property name="name" column="parkingname" type="string"/> </class> </hibernate-mapping> 19

La mise en place de NHibernate Gestion des sessions: On récupère la configuration de la base de données Configuration; On récupère la factory des sessions ISessionFactory; On récupère une session de la factory ISession; 20

La mise en place de NHibernate L objet NHibernate.Cfg.Configuration Informations de connection à la base de données et les propriétés de Nhibernate (App.config) Configuration conf = new Configuration().Configure("App.config"); Informations de mapping : les différents fichiers de mapping Configuration conf = conf.addassembly("[objet].hbm.xml"); 21

La mise en place de NHibernate Comment obtenir une session? Récupérer une instance de ISessionFactory de la configuration ISessionFactory factory = conf. BuildSessionFactory(); Récupérer une instance de ISession de la Factory ISession session = factory.opensession(); La session : 3 Actions : Save Update Delete Exemple : session.save(objet); 22

La mise en place de NHibernate Que permet une transaction? Valider une action de la session : Commit(); Annuler une action de la session : Rollback(); try{ ISession session = ITransaction tx = session.begintransaction(); tx.commit(); session.close(); } catch(exception ex){ tx.rollback(); } 23

Exemple avec NHibernate Exemple simple de l utilisation de NHibernate : Création d un objet Parking et sauvegarde de ce dernier en base de données; Même exemple avec une autre base de données; 24

Fonctions avancées Pour l héritage, nous avons 3 solutions : Table per class hierarchy : balise <subclass> Une classe par type d entité mais une seule et même table dans la base de données. Un champ discriminant dans la table. Table per subclass : balise <joined-subclass> Autant de tables que d entités. Table per concrete class : mapping simple Autant de table que d entités concrètes, mais rarement utilisé due à sa limitation. 25

Fonctions avancées Gestion des performances : Gestion des collections d objets utilise le lazy-loading. Attribut lazy avec la valeur true ou false; Ne charge uniquement les objets lors de leur accès. Qu est ce que l on y gagne? Temps de chargement des données d une application. Économie de ressource mémoire et de charge serveur coté SGBD. 26

Fonctions avancées Implémente son propre langage d interrogation, 2 solutions : Construction de critères et de filtres Grâce aux objets ICriteria Utilisation d un véritable langage d interrogation objet : Le HQL (Hibernate Query Language) Utilisation de l objet IQuery Langage de requête totalement orienté objet. 27

Conclusion La correspondance entre le modèle objet et le modèle relationnel n est pas si facile que l on peut croire Les outils ORM: Facilite cette correspondance. Gain de temps au niveau du développement Portabilité de l application. 28

Bibliographie Nombreux sites parmis lesquels : Livre blanc sur les ORM : http://www.dotnetguru.org/articles/persistance/livreblanc/orma pping.htm Site du framework Hibernate et NHibernate : http://www.hibernate.org/ Blog : http://www.technologies-dotnet.be http://blog.olivier-duval.info/ http://fr.wikipedia.org/wiki/mapping_objet-relationnel http://www.developpez.com 29

Question 30