JPA Avec Eclipselink

JPA Avec Eclipselink

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

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    119 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us