Object Relational Mapping Java Persistence API Alexandre COLLIGNON - Ingénieurs 2000 22 Janvier 2008.

Slides:



Advertisements
Présentations similaires
Les ORMs ● Faire coexister le monde relationnel et objet.
Advertisements

Oubliez SQL avec SQLAlchemy Pycon.fr 2009 Michael Scherer.
Présentation LabPlus v3. Solution novatrice en Technologies de l’information Solution novatrice en Technologies de l’information Application pour la Gestion.
Formation ExtJS 1 Vendredi 21 aout 2009 – Villeurbanne – Société IZEO.
RMLL 2008 Isis-FISH/Gesi Benjamin Poussin Code Lutin
SQL : 4 fonctions d'exploitation de SGBD SQL (Structured Query Language, traduisez Langage de requêtes structuré) est un langage informatique ayant pour.
Développement d'applications Web avec le framework PHP Symfony 2 Mathieu Peltier (Mercator Océan - CNRS) (UMS 831, Observatoire Midi-Pyrénées)
Logiciel Assistant Gestion d’Événement Rémi Papillie (Chef d’équipe) Maxime Brodeur Xavier Pajani Gabriel Rolland David St-Jean.
Initiation à QuickPlace, janvier Initiation à QuickPlace n Nature de l'outil n Fonctions de base (lecture, création) n Fonctions de gestionnaire.
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.
1 TER 2012 Engilberge, Lludice, M'rah Flex Web Roster /32.
1 Créer un extension OpenOffice.org avec Eclipse Créer une extension OpenOffice.org avec Eclipse.
1 Programmation en C++ Cycle de vie ● La vie d'un objet ● Destructeur ● Gestion de mémoire dynamique.
DIAGRAMME DE DEPLOIEMENT Exposé de: MBALLA MEKONGO Michèle MBOUNA FEUZE William SIEYADJEU Alex Lionel CHOPGWE Leonard NDUMATE Landry TIDJON Lionel.
 Introduction  Gestion de la correspondance objet/relationnel  ORM: Object Relationnel Mapping  Framework: Hibernate, Tooplik,…  JPA: Java persistance.
Les Bases de données Définition Architecture d’un SGBD
Cross-Plateform Cours JavaScript
JAVA.
Présenté par M. Anis DIALLO
Cours 12 : Les Web Services et UDDI Mars Version 1.0 -
LES TABLEAUX EN JAVA.
PROJET JAVA Automatisation d’une rame de métro
Les Bases de données Définition Architecture d’un SGBD
Initiation aux bases de données et à la programmation événementielle
Généralité sur les bases de données
Javadoc et débogueur Semaine 03 Version A16.
Principes de programmation (suite)
Réalisation d'agents de surveillance Zephir
Asynchronous Javascript And Xml
Présentation du projet FederID ■ ■ ■
Bonnes pratiques Orienté Objet et Java
Programmation en C++ Classes
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
LES IDE DE CONCEPTION Myriam BAKAYOKO Manon RAJAONARIVELO Jeremy MICHEL André NOEL Guillaume GEBAVI Arthur AGERON Fabien SIMON - G6S2.
Programmation Android Bases De Données, SQL-lite
Présentation de frameworks J2EE 1 LIU Sizhao LUO Xin MALICK MANDENGUE Serge.
Formation sur les bases de données relationnelles.
Développement d’applications interactives
Integrated Business intelligence
Programmation Android Première application Android
6. CONCEPTION PHYSIQUE RELATIONNELLE
L1 Technique informatique
5 Analyse avec Designer d'Oracle
Assembleur, Compilateur et Éditeur de Liens
„La plate-forme EAI “ Initiation à WBI
Architectures Logicielles Java GLG203 GLG204
7 Contraintes d’intégrité en SQL
© Robert Godin. Tous droits réservés.
Langages de programmation TP11
CAS AFPA Sprint n°1.
Présenté par M. Anis DIALLO
20 Données semi-structurées et XML
EPITECH 2009 UML EPITECH 2009
JDepend - Analyse de la qualité du code Java -
Module 5 : Gestion de l'accès aux ressources à l'aide de groupes
Reconnaissance de formes: lettres/chiffres
Elles contiennent des informations autre que géométriques
Principes de programmation (suite)
Le langage C# : Partie 1.
Tableaux croisés dynamiques sous Excel: des outils simples pour une analyse rapide de jeux de données en cytométrie Camille SANTA MARIA Ingénieur d’étude.
Arbre binaire.
Exploitation de vos données
Support de formation Administrateur Entretiens
Modélisation des SI et de la connaissance
© Robert Godin. Tous droits réservés.
Les données structurées et leur traitement
Offre technologique à destination des entreprises
Transcription de la présentation:

Object Relational Mapping Java Persistence API Alexandre COLLIGNON - Ingénieurs Janvier 2008

22 Jan. 2008Alexandre COLLIGNON2 Sommaire ● Introduction ● Object Relational Mapping ● Java Persistence API ● Exemple d'utilisation ● Conclusion

22 Jan. 2008Alexandre COLLIGNON3 Introduction Les bases de données relationnelles ● Basées sur le langage relationnel Opérations ajout / lecture / modification / suppression ● Eléments de même “constitution” stockés dans des tables ● Stockent de grande quantité de données de façon Uniforme Maîtrisée Interopérable

22 Jan. 2008Alexandre COLLIGNON4 Introduction Le monde objet ● Ensemble d'entités Autonomes En relation Qui coopèrent ● Un objet correspond à Ensemble de membres (primitif ou objet) Ensemble de méthodes UNE responsabilité

22 Jan. 2008Alexandre COLLIGNON5 Object Relational Mapping ● Relier les mondes objet et relationnel Stocker les objets dans des bases de données relationnelles ● Offrir une couche d'abstraction au SGBDR ● Séparer les responsabilités ● Implémentation dans de nombreux langages Framework Ruby on Rails contient un ORM Rose::DB::Object en Perl PDO pour Python

22 Jan. 2008Alexandre COLLIGNON6 Java Persistence API ● L'O.R.M à la sauce Java ● Une partie de la spécification EJB3 (JSR220) Intégrée à Java Enterprise Edition 5 Fruit du rassemblement des travaux des ORMs Java existants ● Différentes implémentations disponibles Toplink Essential (Reference Implementation) Hibernate (JBoss) Open JPA (Apache)

22 Jan. 2008Alexandre COLLIGNON7 Java Persistence API ● Environnement d'exécution Application Stand-alone (Architecture 2-Tiers) Conteneur d'EJB (Architecture 3-Tiers) ● Code indépendant de l'environnement Souplesse évidente Maintenabilité accrue

22 Jan. 2008Alexandre COLLIGNON8 Java Persistence API ● Cinq composants principaux L'unité de persistance Le modèle des objets du domaine Les méta-données API Requêtes

22 Jan. 2008Alexandre COLLIGNON9 Java Persistence API Unité de persistance ● Correspond à l'environnement Configuration de l'accès à la base de données Paramètrage de la couche de persistance ● Spécifiée à l'aide du fichier persistence.xml

22 Jan. 2008Alexandre COLLIGNON10 Java Persistence API Unité de persistance ● Exemple hors conteneur d'EJBs oracle.toplink.essentials.PersistenceProvider fr.umlv.etudiant.acollign.jpa.bom.Person...

22 Jan. 2008Alexandre COLLIGNON11 Java Persistence API Unité de persistance ● Exemple dans un conteneur d'EJB jdbc/xpose

22 Jan. 2008Alexandre COLLIGNON12 Java Persistence API Objet du domaine - Entity ● Objet métier sous forme de POJO (Plain Old Java Object) Création par un simple new Simple Maîtrisé ● Aucune contrainte d'implémentation / héritage ● Entity = POJO + Clé primaire + Méta données

22 Jan. 2008Alexandre COLLIGNON13 Java Persistence API Objet du domaine - Entity ● Un simple JavaBean Constructeur par défaut Accesseur pour chaque champ ● getFieldName / setFieldName (non booléen) ● isFieldName / setFieldName (booléen) Gestion d'évènement sur les modifications des propriétiés ● non requis par JPA

22 Jan. 2008Alexandre COLLIGNON14 Java Persistence API Objet du domaine - Entity ● Un exemple de JavaBean public class Person { private String lastname; private String firstname; private Address address; public Person() {} public Person(String lastname, String firstname, Address address) { this.firstname = firstname; this.lastname = lastname; this.address = address; } public String getLastname() { return lastname; } public void setLastname(String lastname) { this.lastname = lastname; }... }

22 Jan. 2008Alexandre COLLIGNON15 Java Persistence API Objet du domaine – Clé primaire ● Obligatoire ● Référence unique vers un Entity en base de données ● Deux formes possibles Simple (un type primitif) Composé (N type(s) primitif(s) ou objet(s))

22 Jan. 2008Alexandre COLLIGNON16 Java Persistence API Objet du domaine – Clé primaire ● Génération automatique des clés primaires simples AUTO ● Au choix du provider de peristance TABLE ● Une valeur dans une table utilisée pour tous les entities SEQUENCE ● Fonction sequence du SGBDR (pas toujours portable) IDENTITY ● Fonction identity du SGBDR (pas toujours portable)

22 Jan. 2008Alexandre COLLIGNON17 Java Persistence API Objet du domaine – Clé primaire ● Clé primaire composée Plusieurs champs de l'objet Un objet externe contenant plusieurs champs

22 Jan. 2008Alexandre COLLIGNON18 Java Persistence API Méta données ● Définition dudit mapping Correspondance entre entities et tables Correspondance entre membres et colonnes Renseignement des relations entre entities Spécification de la génération des clés primaires

22 Jan. 2008Alexandre COLLIGNON19 Java Persistence API Méta données ● Deux méthodes Annotation Java Fichier de description XML orm.xml ● Ces deux méthodes peuvent être mélangées Technique appelée “merged meta-data” Parfois utile Souvent dangeureux

22 Jan. 2008Alexandre COLLIGNON20 Java Persistence API Méta données - Exemple ● Utilisation des public class private long private String lastname; private String firstname; private Address address; public Person() {} public String getLastname() { return lastname;} public void setLastname(String lastname){ this.lastname = lastname; }... }

22 Jan. 2008Alexandre COLLIGNON21 Java Persistence API Méta données - Exemple ● Utilisation du fichier orm.xml

22 Jan. 2008Alexandre COLLIGNON22 Java Persistence API Le manager d'entité (EntityManager) ● Entity managé par l'objet EntityManager Lecture / ajout / modification / suppression Factory de requêtes Récupération de la transaction d'entité Attribué à une unité de persistance ● EntityManagerFactory Créé sur la factory method Persistence.createEntityManagerFactory Méthode createEntityManager

22 Jan. 2008Alexandre COLLIGNON23 Java Persistence API Requête (Query) ● JPA dispose du langage JPQL (aka EJBQL) Inspiré fortement du langage SQL Plus proche de l'objet que SQL Une abstraction supplémentaire Facile à manipuler (quand on connaît SQL ou pas) ● SQL reste cependant utilisable Parfois nécessaire Mais déconseillé

22 Jan. 2008Alexandre COLLIGNON24 Java Persistence API Requête (Query) ● L'objet Query Représente une requête Instantiation à l'aide de factory method sur un EntityManager ● em.createQuery ● em.createNativeQuery ● em.createNamedQuery

22 Jan. 2008Alexandre COLLIGNON25 Java Persistence API Requête (Query) ● Exemple de requêtes JPQL Select s From Student s Select s From Student s Where s.firstname = “Alexandre” ● Les requêtes paramètrées Select s From Student s Where s.firstname = :fs Peuvent être compilées -> performances Enrichies des paramètres (place holder) après création ● query.setParameter(“fs”, “Alexandre”);

22 Jan. 2008Alexandre COLLIGNON26 Java Persistence API Requête (Query) ● Named Query Utilisation sur un Entity Associe un nom à une requête JPQL Plus de cohérence Compilée (et donc plus “Select s from Student s”) ● Utilisation via factory method spécifique ● em.createNamedQuery(“Student.findAll”); /!\ Espace de nom partagé -> Attention au conflit ● Convention ClassName.QueryDescription

22 Jan. 2008Alexandre COLLIGNON27 Java Persistence API ● Exemple d'utilisation avec Des étudiants (et donc des personnes) et leurs filières Toplink Essential comme implémentation JPA Deux SGBDR ● Java DB (aka Apache Derby DB) ● PostgreSQL SQuirreLSQL Eclipse en IDE

22 Jan. 2008Alexandre COLLIGNON28 Conclusion ● Les avantages Séparation couche métier – accès à la base de données Simplification de l'utilisation des données Abstraction du SGBDR sous-jacent ● Les faiblesses (subjectives) Jeunesse de la norme Implémentation aux compléments hétérogènes ● Utilisation des bonus empêche de changer d'implémentation

22 Jan. 2008Alexandre COLLIGNON29 Conclusion ● Le futur de JPA Ecriture de la version 2.0 en cours Spécification sera extraite de celle des EJBs ● Les alternatives aux ORMs (et au SGBDR) Utilisation de SGBD Objet (Caché, Versant) ● Ce qui n'a pas pu être vu en détail Gestion des relations Gestion des transactions

22 Jan. 2008Alexandre COLLIGNON30 Références ● Approche objet ● ORM html html ● JPA – Informations JEE Conférence “Writing JPA Applications”, SpringOne Conférence “JEE 5 Blueprints JPA”, JavaOne 2006 Conférence “Advanced Topic in JPA”, JavaZone 2007

22 Jan. 2008Alexandre COLLIGNON31 Questions ?