Mapping Objet/Relationnel



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)

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

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

Application web de gestion de comptes en banques

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

TP Programmation Java / JDBC / Oracle

Bases de Données Avancées

A QUOI SERVENT LES BASES DE DONNÉES?

Programmation d application Bases de données avec Java

OpenPaaS Le réseau social d'entreprise

A QUOI SERVENT LES BASES DE DONNÉES?

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

Java DataBaseConnectivity

Java et les bases de données

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

Bases de données relationnelles

Les bases de données

Création d une application JEE

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

Bases de Données relationnelles et leurs systèmes de Gestion

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

Mercredi 15 Janvier 2014

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

Compte Rendu d intégration d application

TP Contraintes - Triggers

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

Le Langage De Description De Données(LDD)

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

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

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

Développement Web - Object Relational Mapping and Hibernate

IFT3030 Base de données. Chapitre 2 Architecture d une base de données

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

I4 : Bases de Données

Compétences Business Objects

SQL Historique

Accès aux bases de données

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

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

Application BdD et JDBC. Introduction 1/28. I Dans tout les cas, une seule problématique. I Quelques alternatives :

IFT3030 Base de données. Chapitre 1 Introduction

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

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

Le Langage SQL version Oracle

Europa. Développement JEE 5. avec Eclipse. K a r i m D j a a f a r. A v e c l a c o n t r i b u t i o n d e O l i v i e r S a l v a t o r i

CREATION WEB DYNAMIQUE

UML et les Bases de Données

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

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Magasins et entrepôts de données (Datamart, data warehouse) Approche relationnelle pour l'analyse des données en ligne (ROLAP)

Gestion de base de données

Introduction au Système de Gestion de Base de Données et aux Base de Données

Information utiles. webpage : Google+ : digiusto/

Gestion des transactions et accès concurrents dans les bases de données relationnelles

Bases de données Cours 1 : Généralités sur les bases de données

Visual Paradigm Contraintes inter-associations

Création et Gestion des tables

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

Mapping Objet Relationnel (ORM) Partie 1 : Principes & Fonctionnement en lecture SQL Généré Optimisations

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

Bases de données cours 1

Olivier Mondet

JOnAS 5. Serveur d application d

Introduction aux bases de données. Généralités sur les bases de données. Fonctions d'un SGBD. Définitions. Indépendance par rapport aux traitements

Cours en ligne Développement Java pour le web

Table des matières. Avant-propos

Introduction aux bases de données Cours 1 : Généralités sur les bases de données

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

Vincent Augusto

BASES DE DONNEES TP POSTGRESQL

A.E.C. GESTION DES APPLICATIONS TECHNOLOGIE DE L'INFORMATION LEA.BW

Bases de données Oracle Virtual Private Database (VPD) pour la gestion des utilisateurs d applications

Mejdi BLAGHGI & Anis ASSÈS

Bases de Données. Plan

I. MySQL : Serveur et SGBD

THÉMATIQUES. Comprendre les frameworks productifs. Découvrir leurs usages. Synthèse

Administration des bases de données. Jean-Yves Antoine

Panorama des Bases de Données

[BASE DE DONNEES MULTIMEDIA]

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

MySQL avec Mac OS X. Quelques manipulations avec le terminal sont nécessaires si une version de MySQL est déjà lancée:

TP Bases de données réparties

Bases de données avancées Introduction

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Licence Professionnelle Commerce Electronique. MySQL. Michel DUBOIS Michel Dubois : Support de cours SGBD N 1

16H Cours / 18H TD / 20H TP

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

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é

Introduction aux Bases de Données Relationnelles Conclusion - 1

TP3 : Creation de tables 1 seance

Bases de données et sites WEB

Bases de données avancées

Plan. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD

Architecture Orientée Service, JSON et API REST

PROJET 1 : BASE DE DONNÉES REPARTIES

Refonte front-office / back-office - Architecture & Conception -

EJB. Karim Bouzoubaa Issam Kabbaj

Transcription:

Mapping Objet/Relationnel I. Mougenot (isabelle.mougenot@univ-montp2.fr) Faculté des Sciences Université Montpellier 2 2014 Mougenot (UM2) FMIN362 Cours2 2014 1 / 14

Les limites du relationnel 1 Première forme normale (1FN) : contorsions en terme de modélisation pénalisantes. Un seul type de données (table), qui correspond é un ensemble de tuples. Le tuple est construit comme une concaténation de valeurs de types primitifs (numérique, alphanumérique, date...). 2 la normalisation éclate les objets complexes du monde réel en de multiples relations et oblige à des jointures pour recomposer l information. e1.department().manager().salary() select e2.salary from emp e1, emp e2 where e1.n sup=e2.num; Mougenot (UM2) FMIN362 Cours2 2014 2 / 14

Relationnel et programmation externe 1 la distorsion des langages (impedance mismatch) : les LDD et LMD (déclaratifs et orientés ensemble) versus les langages de programmation dit hôtes (impératifs et orientés élements) présentent des incompatibilités qui nécessitent des artifices de programmation (curseurs par exemple). 2 Les langages de programmation sont souvent plus complets en ce qui concerne la prise en charge de la complexité des objets du monde considéré. Difficultés de mise en place de couches applicatives implantées autour des SGBD relationnels Mougenot (UM2) FMIN362 Cours2 2014 3 / 14

Les types de données abstraits Notion de type de données abstrait ADT ou TAD = ensemble de fonctions qui cache la représentation d un objet et contraint les interactions de l objet avec les autres objets. Un ADT est naturellement implanté sous forme de classe (collection d objets ayant mêmes structure et opérations). Les objets sont donc des instances d ADT. Les SGBDOO (orientés objet) comme les SGBDOR (objet relationnel) vont tirer parti des TAD 1 SGBDOO Db4O, Objectivity (http://www.objectivity.com/), Poet Software, Matisse, EyeDB (http://www.eyedb.org/),... 2 SGBDOR Oracle, PostgreSQL et DB2 admettent une surcouche objet qui les range dans la catégorie SGBDOR Mougenot (UM2) FMIN362 Cours2 2014 4 / 14

Les types de données abstraits Exemple de TAD dans le contexte d Oracle (SQL3) CREATE TYPE proprietaire_t AS OBJECT (nomp char(20), adressep varchar(20)) / CREATE TABLE client OF proprietaire_t (constraint client_pk primary key (nomp)); Mougenot (UM2) FMIN362 Cours2 2014 5 / 14

Patron Data Access Object Mapping Objet/Relationnel et patron de conception DAO Patron de conception pour la persistance des objets. Un ensemble de classes intermédiaires (suffixées par DAO) vont venir s articuler entre les classes Java définies sans traitements spécifiques (POJOs a ) et les tables de la base de données a Plain Object Java Objects Business Object Figure: Patron de conception DAO Mougenot (UM2) FMIN362 Cours2 2014 6 / 14

Patron Data Access Object Mapping Objet/Relationnel et patron de conception DAO Ces classes DAO vont prendre en charge les méthodes CRUD (Create, Retrieve, Update, Delete) = prendre en charge les opérations de consultation, d insertion et de mise à jour permises sur les tuples des tables de la bd Business Object Figure: Patron de conception DAO Mougenot (UM2) FMIN362 Cours2 2014 7 / 14

Mougenot (UM2) Figure: Diagramme FMIN362 Cours2 de classes DAO 2014 8 / 14 Principes généraux et problèmes posés Patron Data Access Object Diagramme de classes simplifié Mapping Objet/Relationnel et patron de conception DAO

Classes POJO EMP et DEPT Mapping Objet/Relationnel et patron de conception DAO Diagramme de classes descriptives Figure: Diagramme de classes du modèle exemple Mougenot (UM2) FMIN362 Cours2 2014 9 / 14

Mapping Objet/Relationnel manuel Classe DAO Employé (portion 1) : ordres pris en charge import java.sql.*; import javax.sql.xaconnection; public class EmployeDAO { final private String create = "insert into EMP (nom, num, fonction," + "n_sup, embauche, salaire, comm, n_dept)" + " values(?,?,?,?,?,?,?,?)"; final private String update = "update EMP set nom =?," + " fonction =?, n_sup =?, embauche =?," + " salaire =?, comm =?, n_dept =? where num =? "; final private String delete = "delete from EMP where num =? "; Listing 1: Quelques opérations DAO Mougenot (UM2) FMIN362 Cours2 2014 10 / 14

Mapping Objet/Relationnel manuel Classe DAO Employé (portion 2) : construction des méthodes final private String RetrieveByNum = "select nom, num, fonction, n_sup, " + "embauche, salaire, comm, n_dept from EMP where num =? "; public Connection connexion(oracle.jdbc.xa.client.oraclexadatasource ods) throws SQLException,XAException{ xac = ods.getxaconnection(); conn = xac.getconnection(); conn.setautocommit(false); return conn; } public Employe create(employe e) throws SQLException { return create(e.getnum(),e.getnom(),e.getfonction(), e.getn_sup(),e.getsalaire(),e.getcomm(), e.getembauche(),e.getnum_dep());} Mougenot (UM2) FMIN362 Cours2 2014 11 / 14

Mapping Objet/Relationnel manuel Classe DAO Employé (portion 3) : construction des méthodes public Employe create(int num,string nom, String fonction, int n_sup, double salaire, double comm, Date embauche, int num_dep) throws SQLException {if(conn!=null){try { PreparedStatement ps = conn.preparestatement(create); ps.setstring(1, nom); ps.setint(2, num); ps.setstring(3, fonction);... ps.setdouble(7, comm); ps.setint(8, num_dep); ps.executeupdate(); return new Employe(num,nom,fonction,n_sup, salaire,comm,embauche,num_dep);} catch (SQLException e) {System.err.println("Erreur createemploye!"); } } return null;} Mougenot (UM2) FMIN362 Cours2 2014 12 / 14

Framework de persistance Hibernate Solutions ORM pour Java Tirer parti dans des applications distribuées de données pouvant provenir de diverses sources de données. Par principe, il s agit aussi de prendre en charge les évolutions et les extensions possibles des applications. Les solutions assurant la persistance des données au sein d applications distribuées sont multiples : JDBC / DAO / DbUtils CMP (Container-Managed Persistence) EJB frameworks ORM : Hibernate, TopLink, OpenJPA, KODO Architetures Orientées Services (SOA) Mougenot (UM2) FMIN362 Cours2 2014 13 / 14

Framework de persistance Hibernate Framework Hibernate Adossement à un modèle de métadonnées qui va guider la correspondance entre les classes Java et les tables de la base de données. Dans le contexte d Hibernate, ce modèle va être exprimé : 1 soit au travers de descripteurs XML 2 soit au travers d annotations Java 5. Hibernate s appuie sur la librairie standard JPA (Java Persistence Api) Dans les deux cas, Hibernate propose une gamme de fonctionnalités suffisamment riches pour prendre par exemple, en charge la persistence de plusieurs entités POJOs dans une seule table. Mougenot (UM2) FMIN362 Cours2 2014 14 / 14