Blue Flower

Chercher

1. Les différents composants de JPA

1.1.  Présentation

Le schéma ci-contre montre l'architecture de l'API JPA, c'est à dire ses classes de base et ses interfaces.

JPA Architecture

1.2. La classe javax.persistence.Persistence

La classe Persistence utilise une de ses méthodes statiques  pour obtenir un EntityManagerFactory dans les environnements Java SE. Cette classe est également présente dans tout serveur d'applications  Java EE et c'est pour cela que la prise en charge des API d'amorçage Java SE n'est pas requise dans les environnements des serveurs d'application Java EE.
On utilise la classe Persistence pour initialiser une instance EntityManagerFactory dans les environnements Java SE avec la  méthode "Persistence.createEntityManagerFactory()" ; cette instance, avec sa méthode "EntityManagerFactory.createEntityManger()" crée une instance de EntityManager. On peut illustrer cela par ce bout de code ci-dessous avec "EmpService" comme unité de persistance:

 ... 
   EntityManagerFactory emf = Persistence.createEntityManagerFactory("EmpService");// EmpService est le nom de l'unité de persistence
   EntityManager em = emf.createEntityManager();
 ...

Si on récapitule , dans un environnement Java SE, on  crée une instance de EntityManagerFactory ( ici cette instance s'appelle emf) et avec "emf" on crée une instance de   EntityManager ( ici cette instance s'appelle em) avec laquellle on va pouvoir manipuler les instances des Entity de l'application par les méthodes suivantes :

  1. find(); cette méthode EntityManager.find() est utilisée pour trouver une entité dans la base de données en se servant de la clé primaire.
  2. persist(); cette méthode est utilisé pour enregistrer l'objet précisé en paramètre  dans la base de données.
  3. merge()
  4. detach()
  5. refresh()
  6. remove (); cette méthode entityManager.remove() est utilisée que lorsque nous devons supprimer une entité de la base de données.

1.3. Persistence
Cette classe contient des méthodes statiques permettant d'obtenir des instances de  EntityManagerFactory.

1.4. L'interface EntityManagerFactory
Cette interface fait partie de javax.persistence et c'est ce qu'on peut appeler familièrement une fabrique de classe pour EntityManager pour une unité de persistance; il permet de créer via sa methode "EntityManagerFactory.createEntityManager()"  plusieurs instances de EntityManager. Persistence.createEntityManagerFactory fournira l'instance EntityManagerFactory en utilisant la persistence-unit  dans le dans le fichier persistence.xml .

1.5. EntityManager
Cette interface fournit les méthodes qui gèrent les opérations de persistance des objets au sein de  chaque application dans laquelle elle est utilisée. Dans un Serveur d'application java EE il existe  un gestionnaire de EJB 3 Entity (JPA Entity) et le contexte de persistance d'une instance d'EntityManager est propagé automatiquement à tous les composants de l'application qui utilisent cette instance au sein d'une API JTA (API Java Transaction). En propageant automatiquement le contexte de persistance, les composants d'une application n'ont pas besoin de passer des références à des instances EntityManager les unes aux autres pour effectuer des modifications au sein d'une seule transaction. C'est le conteneur  du serveur d'application Java EE qui gère le cycle de vie des gestionnaires d'Entity JPA  qui s'en charge.
Les transactions JTA impliquent généralement des appels entre les composants d'une application Java/Java EE. Pour compléter une transaction JTA d'une appplication, les composants concernés ont généralement besoin d'accéder à un contexte de persistance unique. C'est ce qui se produit lorsqu'un EntityManager est injecté dans les composants d'une application au moyen de l'annotation "javax.persistence.PersistenceContext".

1.6. Entity
Les JPA Entity  sont les objets qui sont concernés par la persistance dans la base de données au sein d'une application Java/JEE (voir introduction).

1.7. EntityTransaction
L'EntityTransaction au sein d'une application a une relation "une-à-une" (one-to-one) avec l'EntityManager avec lequel il est lié. Pour chaque EntityManager, les opérations sont traitées ensembles au sein d'une instance d'une classe EntityTransaction.

1.8. Query
Pour l' API JPA, cette interface est implémentée par chaque fournisseur pour obtenir des objets relationnels qui répondent aux critères de persistance.
Les classes et les interfaces ci-dessus sont utilisées pour stocker des entités dans une base de données comme un enregistrement. Elles  aident les programmeurs en réduisant leurs efforts pour écrire du code permettant de  stocker des données dans une base de données.

 2. Les relations entre classes avec JPA

(à suivre)..

précédent