DissertationsEnLigne.com - Dissertations gratuites, mémoires, discours et notes de recherche
Recherche

Finance Islamique

Documents Gratuits : Finance Islamique. Rechercher de 53 000+ Dissertation Gratuites et Mémoires
Page 1 sur 34

e JPA • Le développeur indique qu’une classe est une entité en lui associant l’annotation @Entity • Ne pas oublier d’importer javax.Persistence.Entity dans les classes entités (idem pour toutes les annotations)

Esprit 2009/2010

Adel ELJ (Architecte J2EE)

Page 9

Exemple d’entité – les champs

Esprit 2009/2010

Adel ELJ (Architecte J2EE)

Page 10

Les constructeurs

/** * Constructeur sans paramètre * obligatoire. */ public Departement() { } public Departement(String nom, String lieu) { this.nom = nom; this.lieu = lieu; }

Esprit 2009/2010

Adel ELJ (Architecte J2EE)

Page 11

Exemple d’entité – l’identificateur

@Id @GeneratedValue public int getId() { return id; } public void setId(int id) { this.id = id; }

Esprit 2009/2010

Adel ELJ (Architecte J2EE)

Page 12

Exemple d’entité – une propriété

public String getNom() { return nom; } public void setNom(String nom) { this.nom = nom; }

Esprit 2009/2010

Adel ELJ (Architecte J2EE)

Page 13

Exemple d’entité – une association

@OneToMany(mappedBy="dept") public Collection getEmployes() { return employes; } public void setEmployes(Collection emps) { this.employes = emps; }

Esprit 2009/2010

Adel ELJ (Architecte J2EE)

Page 14

Configuration de la connexion

• Il est nécessaire d’indiquer au fournisseur de persistance comment il peut se connecter à la base de données • Les informations doivent être données dans un fichier persistence.xml situé dans un répertoire META-INF dans le classpath • Ce fichier peut aussi comporter d’autres informations ; il est étudié en détails dans la suite du cours

Esprit 2009/2010

Adel ELJ (Architecte J2EE)

Page 15

Exemple (début)

jpa.Departement jpa.Employe

Esprit 2009/2010

Adel ELJ (Architecte J2EE)

Page 16

Exemple (fin)

Esprit 2009/2010

Adel ELJ (Architecte J2EE)

Page 17

Gestionnaire d’entités

• Classe javax.persistence.EntityManager • Le gestionnaire d’entités (GE) est l’interlocuteur principal pour le développeur • Il fournit les méthodes pour gérer les entités : les rendre persistantes, les supprimer de la base de données, retrouver leurs valeurs dans la base, etc.

Esprit 2009/2010

Adel ELJ (Architecte J2EE)

Exemple de code (1) en dehors d’un serveur d’application

Page 18

EntityManagerFactory emf = Persistence. createEntityManagerFactory("employes"); EntityManager em = emf.createEntityManager(); EntityTransaction tx = em.getTransaction(); em.tx.begin(); Dept dept = new Dept("Direction", "Nice"); em.persist(dept); dept.setLieu("Paris"); tx.commit();

Esprit 2009/2010

Adel ELJ (Architecte J2EE)

Page 19

Exemple de code (2)

String queryString = "SELECT e FROM Employe e " + “WHERE e.poste = :poste"; Query query = em.createQuery(queryString); query.setParameter("poste", "INGENIEUR"); List liste = query.getResultList(); for (Employe e : liste) { System.out.println(e.getNom()); } em.close(); emf.close()

Esprit 2009/2010

Adel ELJ (Architecte J2EE)

Page 20

Contexte de persistance

• La méthode persist(objet) de la classe EntityManager rend persistant un objet • L’objet est ajouté à un contexte de persistance qui est géré par le GE • Toute modification apportée à un objet du contexte de persistance sera enregistrée dans la base de données • L’ensemble des entités gérées par un GE s’appelle un contexte de persistance

Esprit 2009/2010

Adel ELJ (Architecte J2EE)

Page 21

II. Entités

Esprit 2009/2010

Adel ELJ (Architecte J2EE)

Page 22

Caractéristiques

• Seules les entités peuvent être

o o o o

renvoyées par une requête (Query) passées en paramètre d’une méthode d’un EntityManager ou d’un Query le but d’une association référencées dans une requête JPQL

• Une classe entité peut utiliser d’autres classes pour conserver des états persistants (MappedSuperclass ou Embedded étudiées plus loin)

Esprit 2009/2010

Adel ELJ (Architecte J2EE)

Page 23

Conditions pour les classes entités

• Elle doit posséder un attribut qui représente la clé primaire dans la BD (@Id) • Une classe entité doit avoir un constructeur sans paramètre protected ou public • Elle ne doit pas être final • Aucune méthode ou champ persistant ne doit être final • Si une instance peut être passée par valeur en paramètre d’une méthode comme un objet détaché, elle doit implémenter Serializable

Esprit 2009/2010

Adel ELJ (Architecte J2EE)

Page 24

2 types d’accès

• Le fournisseur de persistance accédera à la valeur d’une variable d’instance

o o

soit en accédant directement à la variable d’instance soit en passant par ses accesseurs (getter ou setter)

• Le type d’accès est déterminé par l’emplacement des annotations (associées aux variables d’instance ou aux getter)

Esprit 2009/2010

Adel ELJ (Architecte J2EE)

Page 25

Accès par propriété

• Les accesseurs (setter et getter) doivent être protected ou public • Ils peuvent contenir d’autres instructions que le seul code lié à la valeur de la variable sous-jacente • Ces instructions seront exécutées par le fournisseur de persistance • Si une exception est levée par un accesseur, la transaction est invalidée ; les exceptions contrôlées sont enveloppées par une PersistenceException (non contrôlée, sous RuntimeException)

Esprit 2009/2010

Adel ELJ (Architecte J2EE)

Page 26

Choix du type d’accès

• Le choix doit être le même pour toutes les classes d’une hiérarchie d’héritage (interdit de mélanger les 2 façons) • En programmation objet il est conseillé d’utiliser plutôt les accesseurs que les accès directs aux champs (meilleur contrôle des valeurs) ; c’est aussi le cas avec JPA • Rappel : le choix est déterminé par l'emplacement des annotations ; elles sont associées soit aux accesseurs, soit aux variables d'instance ; ne pas mélanger les 2 !

Esprit 2009/2010

Adel ELJ (Architecte J2EE)

Page 27

Cycle de vie d’une instance d’entité

• L’instance peut être

o

...

Télécharger au format  txt (63.7 Kb)   pdf (443.8 Kb)   docx (35.9 Kb)  
Voir 33 pages de plus »
Uniquement disponible sur DissertationsEnLigne.com