Vous êtes sur la page 1sur 11

persistance de données

Khadija Ferjani
Référence :
TheJavaEE6Tutorial
(oracle)
Annotations
● Les annotations sont une forme de metadata. Ils donnent des
informations sur l'application qui ne font pas partie du programme
lui même.

Les annotations n'ont pas de lien direct sur l'opération du code
qu'il annotent.

Parmi les utilisations des annotations, on note :
● Information pour le compiler (pour détecter des erreurs ou
supprimers des warnings)
● A la compilation et au déploiment, différents outils peuvent traiter
les annotations pour générer du code, des fichiers XML,..

Certaines annotations sont traitées au runtime.
JPA
● Java persistence API.
● C'est une solution basée sur un standard pour la persistance de
données.
● La persistance utilise une approche de mapping object/relationnel
pour lier le modèle de POO et les BDD relationnelles.
Ceci consiste en :
● Java persistance API (voir le package javax.persistence dans
http://docs.oracle.com/javaee/6/api/ )
● The query language
● Object/relational mapping metadata
● The Java persistance Criteria API
Entity
● Une entity est un objet de persistance léger.
● Typiquement, une entity représente une table
dans la BDD.
● Chaque instance d'Entity correspond à une
ligne de cette table.
Entity – how-to
● La classe doit être annotée avec l'annotation
javax.persistance.Entity.
● La classe doit définir un constructeur vide
public ou protected. (Elle peut contenir d'autres
constructeurs).
● La classe ne doit pas être final.
● Toutes les méthodes et les attributs persistants
ne doivent pas être déclarées final.
Primary key
● Les clés primaires simples utilisent l'annotation
javax.persistance.Id pour déclarer une clé primaire.
● Les clés primaires composées sont utilisées quand
la clé est composée de plus qu'un seul attribut.
Ceci correspond à un ensemble d'attribut
persistants.
● Les clés primaires composite sont annotés
javax.persistance.EmbeddedId et
javax.persistance.IdClass.
Primary key class
● La classe doit être publique
● La classe doit définir un constructeur par défaut public
● La classe doit implémenter les méthodes hashCode() and
equals(Objectother).
● La classe doit être serializable.
● Une clé composite doit être mappée à plusieurs attributs de la
classe Entity, ou ils doivent représenter une classe embedded.
● Si la classe est mappé à plusieurs attributs de la classe Entity,
les noms et les types des différents attributs doivent
correspondre.
Multiplicité
● One-to-one : Chaque instance d'entité est liée à une seule instance d'une
autre entité => javax.persistance.OneToOne
● One-to-many : Une instance d'Entty peut être liée à plusieurs instances
d'une autre Entity.
● An entity instance can be related to multiple instances of the other
entities => javax.persistance.OneToMany
● Many-to-one : Plusieurs instances d'une Entity peuvent être liées à une
unique instance d'une autre Entity. to a single instance of the other
● entity => javax.persistance.ManyToOne
● Many-to-many : Les instances d'une Entity peuvent être liées à plusieurs
instances d'une autre Entity => javax.persistance.ManyToMany
Gestion d'Entities
● Les entities sont gérées par un Entity Manager, qui est
représenté par des instances de
javax.persistance.EntityManager.
● Chaque instance de EntityManager est associée à un
contexte de persistance : Un ensemble d'instances
d'Entities gérées qui existent dans un data store donné.
● Un contexte de persistance défini un cadre sous lequel les
instances d'Entity sont créées, persistées and supprimées.
● L'interface EntityManager défini les méthodes utilisées
pour interagir avec le contexte de persistance.
L'interface EntityManager
● L'interface EntityManager permet de créer et
supprimer des entités persistantes, trouver des
entités par la clé primaire,.. et elle permet
d'exécuter des requêtes sur des entités.
Application-ManagedEntityManagers
● 1) Créer un EntityManagerFactory :
@persistanceUnit
EntityManagerFactory emf;
● 2) Récupérer l'instance de EntityManager:
EntityManager em = emf.createEntityManager();
● 3) Récupérer une instance de UserTransaction:
@Resource
UserTransaction utx;

Vous aimerez peut-être aussi