
JPA avec EclipseLink Achref El Mouelhi Docteur de l’universite´ d’Aix-Marseille Chercheur en programmation par contrainte (IA) Ingenieur´ en genie´ logiciel [email protected] H & H: Research and Training 1 / 94 Plan 1 Introduction 2 Creer´ une connexion 3 Creer´ un JPA Project 4 Entity Creation´ d’une entite´ Creation´ de tables associees´ aux entites´ Creation´ des entites´ a` partir d’une BD existante H & H: Research and Training 2 / 94 Plan 5 EntityManager Insertion Mise a` jour Suppression Consultation 6 JPQL : Java Persistence Query Language 7 Relation entre entites´ OneToOne ManyToOne OneToMany ManyToMany Inheritance H & H: Research and Training 3 / 94 Plan 8 Les classes incorporables 9 Les methodes´ callback 10 Utilisation de l’API JPA dans un projet JEE 11 Utilisation de l’API JPA dans un projet Maven H & H: Research and Training 4 / 94 Plusieurs ORM proposes´ pour chaque Langage de POO. Introduction Object-Relational Mapping (lien objet-relationnel) Definition´ est une couche d’abstraction a` la base de donnees´ est une classe qui permet a` l’utilisateur d’utiliser les tables d’une base de donnees´ comme des objets consiste a` associer : une ou plusieurs classes a` chaque table un attribut© Achref de classe a EL` chaque MOUELHI colonne de la table © a comme objectif de ne plus ecrire´ de requeteˆ SQL H & H: Research and Training 5 / 94 Introduction Object-Relational Mapping (lien objet-relationnel) Definition´ est une couche d’abstraction a` la base de donnees´ est une classe qui permet a` l’utilisateur d’utiliser les tables d’une base de donnees´ comme des objets consiste a` associer : une ou plusieurs classes a` chaque table un attribut© Achref de classe a EL` chaque MOUELHI colonne de la table © a comme objectif de ne plus ecrire´ de requeteˆ SQL Plusieurs ORM proposes´ pour chaque Langage de POO. H & H: Research and Training 5 / 94 Quel choix pour PHP ? ! Doctrine pdoMap RedBean ... Introduction Object-Relational Mapping Pour Java EclipseLink Hibernate Java Data Objects (JDO) ... © Achref EL MOUELHI © H & H: Research and Training 6 / 94 Introduction Object-Relational Mapping Pour Java EclipseLink Hibernate Java Data Objects (JDO) ... Quel choix pour PHP ? ! Doctrine© Achref EL MOUELHI © pdoMap RedBean ... H & H: Research and Training 6 / 94 Introduction JPA EclipseLink ? est un framework open source de mapping objet-relation est deriv´ e´ du projet TopLink d’Oracle (un framework d’ORM open source achete´ par Oracle en 2002) supporte© l’API Achref de persistence EL MOUELHI de donnees´ JPA © H & H: Research and Training 7 / 94 Introduction JPA JPA : Java Persistence API est une interface standardisee´ par Sun, qui permet l’organisation des donnees´ a et´ e´ propose´ par JSR (Java Specification Requests) s’appuie sur l’utilisation des annotations pour definir´ le lien entre Entity (classe) et table (en base de donnees´ relationnelle) et sur le gestionnaire© AchrefEntityManager EL MOUELHIpour gerer´ les donn © ees´ (insertion, modification...) H & H: Research and Training 8 / 94 Introduction JPA Etapes´ Creation´ d’une connexion Creation´ d’un JPA Project Creation´ des entites´ et bien utiliser les annotations Etablissement´ de liens entre entites´ Creation´ © des Achref tables, a` partir EL des MOUELHI entites,´ si elles n’existent © pas Manipulation des entites´ (ajout, suppression, modification, consultation) avec EntityManager H & H: Research and Training 9 / 94 Creation´ d’une connexion a` la base de donnees´ (jpa) Aller dans menu File ensuite New et enfin choisir Other Chercher Connection Profile Selectionner´ le SGBD (dans notre cas MySQL) Attribuer un nom a` cette connexion dans Name Cliquer sur New Driver Definition devant la liste deroulante´ de Drivers Definir´ le driver en choisissant le dernier MySQL JDBC DRIVER, en precisant´ son emplacement dans la rubrique JAR List, en supprimant celui qui existait et en modifiant les donnees´ dans la rubrique Properties Verifier´ ensuite l’URL, User name, Password et DataBase Name (jpa) et Valider Creer´ une connexion Creer´ une connexion Avant de creer´ une connexion creer´ une base de donnees´ appelee´ jpa © Achref EL MOUELHI © H & H: Research and Training 10 / 94 Creer´ une connexion Creer´ une connexion Avant de creer´ une connexion creer´ une base de donnees´ appelee´ jpa Creation´ d’une connexion a` la base de donnees´ (jpa) Aller dans menu File ensuite New et enfin choisir Other Chercher Connection Profile Selectionner´ le SGBD (dans notre cas MySQL) Attribuer un© nom Achrefa` cette connexion EL dans MOUELHIName © Cliquer sur New Driver Definition devant la liste deroulante´ de Drivers Definir´ le driver en choisissant le dernier MySQL JDBC DRIVER, en precisant´ son emplacement dans la rubrique JAR List, en supprimant celui qui existait et en modifiant les donnees´ dans la rubrique Properties Verifier´ ensuite l’URL, User name, Password et DataBase Name (jpa) et Valider H & H: Research and Training 10 / 94 Creer´ une connexion Creation´ d’une connexion Tester la connexion Aller dans l’onglet Data Source Explorer Faire un clic droit et ensuite choisir Connect © Achref EL MOUELHI © H & H: Research and Training 11 / 94 Creer´ un JPA Project JPA Creation´ d’un projet JPA Aller dans menu File > New > JPA Project Saisir FirstJpaProject comme nom du projet Choisir jre1.8 dans Target runtime et cliquer deux fois sur Next Dans Platform, choisir la derniere` version d’EclipseLink (2.5.2) Dans Type de JPA Implementation, choisir User Library Ensuite cocher© Achref la case EclipseLink EL MOUELHIet cliquer sur Download © Library... a` droite (pour demarrer´ le tel´ echargement)´ Dans Connection, choisir la connexion definie´ prec´ edemment´ Cocher la case Add driver library to build path et valider H & H: Research and Training 12 / 94 Creer´ un JPA Project JPA Le fichier persistence.xml est situe´ dans le repertoire´ META-INF de src contient les donnees´ sur le mapping entre nos entites/´ et nos tables dans la base de donnees´ © Achref EL MOUELHI © H & H: Research and Training 13 / 94 Entity Une entite´ (Entity) Definition´ correspond a` une table d’une base de donnees´ relationnelle est un objet (Javabean) contenant quelques informations indispensables (annotations) pour le mapping (faire le lien) avec la ´ base de© donn Achrefees EL MOUELHI © H & H: Research and Training 14 / 94 Creation´ Faire un clic droit sur org.eclipse.model, aller dans new et choisir JPA Entity Saisir un nom dans Class name:, ensuite cliquer sur Next Avec le bouton Add..., ajouter les differents´ attributs ainsi que leur type Cocher la case correspondant a` la cle´ primaire puis cliquer sur Finish Verifier´ dans persistence.xml que la ligne <class>org.eclipse.model.Personne</class> a bien et´ e´ ajoutee.´ Entity Creation´ d’une entite´ Une entite´ Pour une meilleure organisation Creer´ un package org.eclipse.model sous src Placer toutes les entites´ dans ce package © Achref EL MOUELHI © H & H: Research and Training 15 / 94 Entity Creation´ d’une entite´ Une entite´ Pour une meilleure organisation Creer´ un package org.eclipse.model sous src Placer toutes les entites´ dans ce package Creation´ Faire un clic droit sur org.eclipse.model, aller dans new et choisir JPA Entity Saisir un© nom Achref dans Class name: EL, MOUELHI ensuite cliquer sur Next © Avec le bouton Add..., ajouter les differents´ attributs ainsi que leur type Cocher la case correspondant a` la cle´ primaire puis cliquer sur Finish Verifier´ dans persistence.xml que la ligne <class>org.eclipse.model.Personne</class> a bien et´ e´ ajoutee.´ H & H: Research and Training 15 / 94 Entity Creation´ d’une entite´ Une entite´ public Personne() { package org.eclipse.model; super(); import java.io.Serializable; } import java.lang.String; import javax.persistence.*; public int getNum() { return this.num; /** } * Entity implementation class for public void setNum(int num) { Entity: Personne this.num = num; * } */ public String getNom() { @Entity return this.nom; public class Personne implements } Serializable { public void setNom(String nom) { this.nom = nom; @Id © Achref EL MOUELHI} © @GeneratedValue (strategy= public String getPrenom() { GenerationType.IDENTITY) return this.prenom; private int num; } private String nom; public void setPrenom(String private String prenom; prenom) { this.prenom = prenom; private static final long } serialVersionUID = 1L; } H & H: Research and Training 16 / 94 // la classe Personne // la classe PersonnePK @IdClass(PersonnePK.class) public class PersonnePK { @Entity @Id public class Personne implements private String nom; Serializable { @Id @Id private String prenom; private String nom; // ensuite getters, setters, @Id constructeur sans parametres et private String prenom; constructeur avec deux // ensuite getters, setters et parametres nom et prenoms constructeur Entity Creation´ d’une entite´ Une entite´ Autres annotations Annotation designation´ @Entity permet de qualifier la classe comme entite´ @Id indique l’attribut qui correspond a` la cle´ primaire de la table @Table decrit´ la table design´ ee´ par l’entite´ @Column definit´ les propriet´ es´ d’une colonne @IdClass indique que l’entite´ annotee´ contient une cle´ composee´ les champs constituant la cle´ seront annote´ par @Id @GeneratedValue s’applique sur les attributs annotes´ par @Id permet la gen´ eration´ automatique de la cle´ primaire © Achref EL MOUELHI © H & H: Research and Training 17 / 94 Entity Creation´ d’une entite´ Une entite´ Autres annotations Annotation designation´ @Entity permet de qualifier la classe comme entite´ @Id indique l’attribut qui
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages119 Page
-
File Size-