Vous êtes sur la page 1sur 13

Cours EJB/J2EE Copyright Michel Buffa

19/10/2004

Introduction aux Entity Beans

Michel Buffa (buffa@unice.fr), UNSA 2002

Entity Bean, introducton

  • n Un Entity Bean représente

    • n Des objets persistants stockés dans une base de donnée,

    • n Des noms, des données

  • n Dans ce chapitre on étudiera

    • n Le concept de persistance,

    • n Ce qu'est un entity bean, du point de vue du programmeur,

    • n Les caractéristiques des entity beans,

    • n Les concepts de programmation des entity beans.

  • Cours EJB/J2EE Copyright Michel Buffa

    19/10/2004

    La persistance par sérialisation

    • n Sérialisation = sauvegarde de l'état d'un objet sous forme d'octets.

      • n Rappel : l'état d'un objet peut être quelque chose de très compliqué.

      • n Etat d'un objet = ses attributs, y compris les atributs hérités.

      • n Si les attributs sont eux-même des instances d'une classe, il faut sauvegarder aussi les attributs de ces instances, etc…

  • n A partir d'un état sérialisé, on peut reconstruire l'objet

  • n En java, au travers de l'interface java.io.Serializable, des méthodes de java.io.ObjectInputStream et java.io.ObjectOutputStream

  • La persistance par sérialisation

    • n Défauts nombreux…

    • n Gestion des versions, maintenance…

    • n Pas de requêtes complexes…

      • n Ex : on sérialize mille comptes bancaires. Comment retrouver ceux qui ont un solde négatif ?

    • n Solution : stocker les objets dans une base de donnée!

    Cours EJB/J2EE Copyright Michel Buffa

    19/10/2004

    La persistance par mapping objet/BD relationelle

    • n On stocke l'état d'un objet dans une base de donnée.

    • n Ex : la classe Personne possède deux attributs nom et prenom, on associe cette classe à une table qui possède deux colonnes : nom et prenom.

    • n On décompose chaque objet en une suite de variables dont on stockera la valeur dans une ou plusieurs tables.

    • n Permet des requêtes complexes.

    La persistance par mapping objet/BD relationelle

    La persistance par mapping objet/BD relationelle
    La persistance par mapping objet/BD relationelle

    Cours EJB/J2EE Copyright Michel Buffa

    19/10/2004

    La persistance par mapping objet/BD relationelle

    • n Pas si simple…

      • n Détermination de l'état d'un objet parfois difficile, tout un art…

      • n Il existe des produits pour nous y aider… TopLink (WebGain), JavaBlend (Sun),

      • n Aujourd'hui la plupart des gens font ça à la main avec JDBC ou SQL/J.

      • n Mais SQL dur à tester/debugger… source de nombreuses erreurs…

    La persistance à l'aide d'une BD Objet

    • n Les Base de données objet stockent directement des objets.

    • n Plus de mapping !

    • n Object Query Language (OQL) permet de manipuler les objets…

    • n Relations entre les objets évidentes (plus de join…)

    • n Bonnes performances mais mauvaise scalabilité.

    Cours EJB/J2EE Copyright Michel Buffa

    19/10/2004

    Qu'est-ce qu'un Entity Bean

    • n Ce sont des objets qui savent se mapper dans une base de donnée.

    • n Ils utilisent un mécanisme de persistance (parmi ceux présentés)

    • n Ils servent à représenter sous forme d'objets des données situées dans une base de donnée

      • n Le plus souvent un objet = une ou plusieurs ligne(s) dans une ou plusieurs table(s)

    Qu'est-ce qu'un Entity Bean

    • n Exemples

      • n Compte bancaire (No, solde),

      • n Employé, service, entreprises, livre, produit,

      • n Cours, élève, examen, note,

  • n Mais au fait, pourquoi nous embêter à passer par des objets ?

    • n Plus facile à manipuler par programme,

    • n Vue plus compacte, on regroupe les données dans un objet.

    • n On peut associer des méthodes simples pour manipuler ces données…

    • n On va gagner la couche middleware !

  • Cours EJB/J2EE Copyright Michel Buffa

    19/10/2004

    Exemple avec un compte bancaire

    • n On lit les informations d'un compte bancaire en mémoire, dans une instance d'un entity bean,

    • n On manipule ces données, on les modifie en changeant les valeurs des attributs d'instance,

    • n Les données seront mises à jour dans la base de données automatiquement !

    • n Instance d'un entity bean = une vue en mémoire des données physiques

    Fichiers composant un entity bean

    • n Idem session beans : interface locale, remote, home, local home, classe du bean, descripteur.

    • n Quelques particularités cependant

      • n La classe du bean se mappe dans une base de données.

      • n Elle doit fournir certaines méthodes obligatoires, qui seront appelées par le container + des méthodes de manipulation simples des données.

      • n Il est nécessaire d'avoir une classe du type de la clé primaire du bean.

        • n Clé primaire = un objet sérializable, unique pour chaque instance. C'est la clé primaire au sens SQL.

    Cours EJB/J2EE Copyright Michel Buffa

    19/10/2004

    Caractéristiques des entity beans

    • n Survivent aux crashes du serveur, du SGBD

    • n Ce sont des vues sur des données dans un SGBD

    Caractéristiques des entity beans n Survivent aux crashes du serveur, du SGBD n Ce sont des

    Caractéristiques des entity beans

    • n Plusieurs instances d'entity beans peuvent représenter les mêmes données

      • n Plusieurs client peuvent accéder aux mêmes données (compte bancaire par exemple)

      • n Un seul thread par bean dans le modèle EJB, code plus simple à écrire,

      • n Mais alors, il faut synchroniser les beans en mémoire pour qu'ils se rafraîchissent lorsque les données changent.

      • n Mais oui ! On peut même modifier les données dans le SGBD depuis un mécanisme extérieur !

      • n Dépend de la politique de transaction du bean.

    Cours EJB/J2EE Copyright Michel Buffa

    19/10/2004

    Caractéristiques des entity beans

    • n Pool d'instances d'un entity bean

      • n Partage d'instances par plusieurs clients.

      • n Recyclage des instances…

      • n Processus similaire aux session beans stateful…

    Caractéristiques des entity beans n Pool d'instances d'un entity bean n Partage d'instances par plusieurs clients.

    Caractéristiques des entity beans

    • n Pas si simple que pour les Session Beans

      • n Comment libérer les ressources (connexions, sockets…)

    • n Deux méthodes de callback

      • n ejbActivate() : appelée par le container lorsque le bean va recevoir un nouvel EJBObject et de nouvelles données dont une clé primaire. Dans ce callback on doit acquérir des ressources (socket)

      • n ejbPassivate() : appelée lorsque le bean va être swappé sur disque. Il faut libérer les ressources.

    Cours EJB/J2EE Copyright Michel Buffa

    19/10/2004

    Caractéristiques des entity beans

    • n Juste avant la passivation, la méthode ejbStore() est appelée. Elle s'occupe de sauvegarder l'état du bean dans une BD.

    • n Idem, au moment de l'activation, le bean doit lire son état depuis la BD. Ceci est réalisé en appelant ejbLoad().

    Caractéristiques des entity beans

    Caractéristiques des entity beans

    Cours EJB/J2EE Copyright Michel Buffa

    19/10/2004

    Deux manières d'assurer la persistance

    • n Bean Managed Entity Bean (BMP)

      • n Persistance effectuée à la main, le plus souvent avec JDBC/SQL, si la BD est relationnelle.

      • n Sauvegarde, relecture, recherche, tout est à faire par le programmeur + déterminer l'état d'un objet (peut devenir très difficile)

  • n Container Managed Persistence Bean (CMP)

    • n Tout est fait par le container !

    • n On indique dans les descripteurs comment on veut que le container assure la persistance.

    • n Peut se faire au moment du déploiement.

    • n Réduit la taille du code,

    • n Développement plus rapide… Grosse plus-value du modèle EJB.

  • Création d'entity beans

    Création d'entity beans

    Cours EJB/J2EE Copyright Michel Buffa

    19/10/2004

    Suppression d'entity beans

    Suppression d'entity beans

    Recherche d'entity beans

    • n Les entity beans correspondant à des lignes dans une BD, on peut avoir besoin de faire des recherches.

    • n Similaire à un SELECT

    • n Se traduit par la présence de méthodes "finders" dans l'interface HOME

      • n findByPrimaryKey(…), findAll()… findCheapProducts()…

    • n Plus d'informations dans les prochains chapitres…

    Cours EJB/J2EE Copyright Michel Buffa

    19/10/2004

    Modifier les données sans passer par le bean

    Modifier les données sans passer par le bean

    Contexte d'un entity bean

    public interface javax.ejb.EJBContext { public javax.ejb.EJBHome getEJBHome(); public javax.ejb.EJBLocalHome getEJBLocalHome(); public java.security.Principal getCallerPrincipal(); public boolean isCallerInRole(java.lang.String); public void setRollbackOnly(); public boolean getRollbackOnly();

    }

    public interface javax.ejb.EntityContext extends javax.ejb.EJBContext { public javax.ejb.EJBLocalObject getEJBLocalObject(); public javax.ejb.EJBObject getEJBObject(); public java.lang.Object getPrimaryKey();

    }

    Cours EJB/J2EE Copyright Michel Buffa

    19/10/2004

    Contexte d'un entity bean

    • n getEJBLocalObject() et getEJBObject() permettent d'obtenir une référence sur l'EJB Object associé au bean.

      • n Le this pour les EJB !

    • n getPrimaryKey() : utile lorsqu'on écrit des entity en mode BMP

      • n On l'utilise depuis ejbLoad() pour savoir quelle donnée il faut lire.

      • n Depuis ejbRemove(), pour savoir quelle donnée il faut supprimer.