Java Persistence API Entity Bean Pr. Youssef Saadi Master Informatique Décision

Java Persistence API Entity Bean Pr. Youssef Saadi Master Informatique Décisionnelle Faculté Des Sciences Et Techniques Université Sultan Moulay Slimane Béni-Mellal AU: 2021/2022 Entity Bean Un Entity Bean représente: Des objets persistants stockés dans une base de données, Gestion via JPA2 + Session Beans JPA utilise la persistance par Mapping Objet/Relationnel: On stocke l'état d'un objet dans une base de donnée. Exemple : la classe Personne possède deux attributs nom et prenom, on associe cette classe à une table qui possède deux colonnes : nom et prenom. Les outils qui assureront la persistance (Toplink, Hibernate, EclipseLink,...) sont intégrés au serveur d’application et devront être compatibles avec la norme JPA. Java EE - Bean Entity & JPA (Youssef Saadi / v1.2) 2 Mapping O/R (ORM) Java EE - Bean Entity & JPA (Youssef Saadi / v1.2) 3 Mécanisme de persistance objet/relationnel Java EE - Bean Entity & JPA (Youssef Saadi / v1.2) La liaison entre les données et l’application par un objet s’appelle le mapping (relier). 4 Session Bean / Entity Bean L’utilisation des Entity Beans permet de représenter une entité de l’application et non une fonctionnalité. Exemple: User serait un Entity Bean, mais UserSubscription serait un Session Bean ; un utilisateur étant voué à rester persistant, alors que l’inscription de l’utilisateur est une opération. Contrairement aux Session Beans, les données des Entity Beans ont généralement une durée de vie longue ; elles sont enregistrées et stockées dans des systèmes de persistance (base de données). Java EE - Bean Entity & JPA (Youssef Saadi / v1.2) 5 Propriété d’un Entity Bean Chaque propriété de cet objet est liée à un champ de la table. Chaque instance de cet objet représente généralement un enregistrement de la table. Toutefois, il est possible qu’un Entity Bean soit réparti sur plusieurs tables. Les Entity Bean suivent le même principe que les tables relationnelles et doivent tous posséder un identifiant unique (clé primaire). Un champ relationnel est représenté, dans un Entity Bean, par une propriété dont le type est un autre Entity Bean. On parle d’agrégation, en programmation objet. À l’opposé, une table est liée à une autre table par une clé étrangère. Java EE - Bean Entity & JPA (Youssef Saadi / v1.2) 6 Liaison entre les classes User et AccountInfo Java EE - Bean Entity & JPA (Youssef Saadi / v1.2) 7 Types de relation entre les Entity Bean One To One (un à un) : Si un utilisateur ne peut avoir qu’un seul et unique compte alors la relation entre l’utilisateur et son compte est de type « One To One ». One To Many (un à plusieurs) et Many To One (plusieurs à un) : Un utilisateur peut avoir plusieurs portefeuilles alors qu’un portefeuille est détenu par un seul utilisateur. La relation entre Portefeuille et Utilisateur est de type « Many To One » et la relation entre Utilisateur et Portefeuille est de type « One To Many ». Many To Many (plusieurs à plusieurs) : Un utilisateur a plusieurs loisirs(hobby) et un loisir peut être partagé avec plusieurs utilisateurs. Dans ce cas, la relation est de type « Many To Many » entre utilisateur et utilisateur. Java EE - Bean Entity & JPA (Youssef Saadi / v1.2) 8 Création d’un Entity Bean (EJB3) L’annotation @Entity précise au conteneur les classes à considérer en tant qu’Entity Bean. Cette annotation permet de définir, si besoin, le nom (unique dans une application) de l’entité via l’attribut name. La valeur par défaut utilisée est le nom de la classe de l’entité. Java EE - Bean Entity & JPA (Youssef Saadi / v1.2) 9 Création d’un Entity Bean (EJB3) Par défaut, un Entity Bean User est mappé sur la table « User ». Si pour certaines raisons, vous deviez le mapper sur une autre table, vous devrez alors utiliser l’annotation @Table. Cette annotation possède différents attributs : name (requis) : définit le nom de la table à utiliser pour le mapping. catalog (optionnel) : définit le catalogue utilisé. schema (optionnel) : définit le schéma utilisé. uniqueConstraints (optionnel) : définit les contraintes qui seront placées sur la table. Cet attribut est utilisé lorsque le conteneur génère les tables au déploiement et n’affecte en rien l’exécution même de l’entité. Java EE - Bean Entity & JPA (Youssef Saadi / v1.2) 10 Les champs persistants N’importe quel champ (variable d’instance) non « static » et non « transient », d’un Entity Bean, est automatiquement considéré comme persistant par le conteneur. On peut considérer deux types d’annotations liés au mapping objet/relationnel : les annotations liées aux propriétés, les annotations liées aux colonnes. Ces deux types d’annotations, qui seront décrites de manière plus détaillée dans les parties suivantes, peuvent se placer de deux façons : directement sur les champs (type « FIELD »), sur les accesseurs (et plus précisément le getter, type « PROPERTY »). Java EE - Bean Entity & JPA (Youssef Saadi / v1.2) 11 Exemple Java EE - Bean Entity & JPA (Youssef Saadi / v1.2) Les annotations étant ici précisées sur les variables d’instance (façon « FIELD »), le conteneur injecte les valeurs directement dans celles-ci. 12 Exemple avec utilisation de la façon « PROPERTY » Java EE - Bean Entity & JPA (Youssef Saadi / v1.2) 13 Annotations liées aux propriétés simples Le conteneur considère par défaut que la propriété est annotée avec @Basic avec les valeurs par défaut des attributs suivants : fetch (FetchType.EAGER par défaut) : définit si le contenu de la propriété doit être chargé à la demande. (FetchType.LAZY, « paresseusement », en anglais) ou au moment du chargement de l’entité (FetchType.EAGER, « désireux », en anglais). optional (true par défaut) : définit si la propriété accepte la valeur « null » ou non. Cet attribut ne fonctionne pas pour les types primitifs (qui ne peuvent être nuls). Java EE - Bean Entity & JPA (Youssef Saadi / v1.2) 14 Annotations liées aux propriétés simples Pour indiquer qu’une propriété ne doit pas être enregistrée, il faut annoter son getter avec @Transient (seulement si cette méthode est de la forme getXxx()). Les types java.util.Date ou java.util.Calendar utilisés pour définir des propriétés dites « temporelles » peuvent être paramétrés pour spécifier le format le plus adéquat à sa mise en persistance : DATE : utilisé pour la date (java.sql.Date), TIME : utilisé pour l’heure (java.sql.Time), TIMESTAMP : utilisé pour les temps précis (java.sql.TimeStamp) Java EE - Bean Entity & JPA (Youssef Saadi / v1.2) 15 Annotations liées aux propriétés simple L’énumération permet de spécifier un ensemble de valeurs possibles pour une propriété. Java EE - Bean Entity & JPA (Youssef Saadi / v1.2) 16 Annotations liées aux colonnes simples On utilise l’annotation @Column qui peut être utilisée conjointement avec les précédentes. Java EE - Bean Entity & JPA (Youssef Saadi / v1.2) 17 Annotations liées aux colonnes simples Voici une description des attributs, tous optionnels, de l’annotation @Column : name : précise le nom de la colonne liée. Le nom de la propriété est utilisé par défaut. unique : précise si la propriété est une clé unique ou non (la valeur est unique dans la table). nullable : précise si la colonne accepte des valeurs nulles ou non. insertable : précise si la valeur doit être incluse lors de l’exécution de la requête SQL INSERT. La valeur par défaut est true. updatable : précise si la valeur doit être mise à jour lors de l’exécution de la requête SQL UPDATE. La valeur par défaut est true. Java EE - Bean Entity & JPA (Youssef Saadi / v1.2) 18 Annotations liées aux colonnes simples table : précise la table utilisée pour contenir la colonne. La valeur par défaut est la table principale de l’entité. Cet attribut est utilisé lorsqu’un Entity Bean est mappé à plusieurs tables. length : précise la longueur que la base de données doit associer à un champ texte. La longueur par défaut est 255. precision : précise le nombre maximum de chiffre que la colonne peut contenir. La précision par défaut est définie par la base de données. scale : précise le nombre fixe de chiffres après le séparateur décimal (en général le point). Cet attribut n’est utilisable que pour les propriétés décimales (float, double …). Le nombre de décimal par défaut est défini par la base de données. Java EE - Bean Entity & JPA (Youssef Saadi / v1.2) 19 Objets incorporés Java EE - Bean Entity & JPA (Youssef Saadi / v1.2) 20 Utilisation des objets incorporés Java EE - Bean Entity & JPA (Youssef Saadi / v1.2) 21 Utilisation des objets incorporés Java EE - Bean Entity & JPA (Youssef Saadi / v1.2) 22 Identification unique Un Entity Bean doit posséder un champ dont la valeur est unique, dit identificateur unique ou clé primaire. Il existe deux types d’identifiants : simple composite Java EE - Bean Entity & JPA (Youssef Saadi / v1.2) 23 Identification simple On parle d’identifiant simple lorsque celui-ci est composé par un unique champ dont le type est « simple ». Les types simples sont uploads/Science et Technologie/ chap05-entity-bean.pdf

  • 22
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager