Sie sind auf Seite 1von 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 reprsente


n

Des objets persistants stocks dans une base de donne, n Des noms, des donnes
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 caractristiques des entity beans , n Les concepts de programmation des entity beans.

Cours EJB/J2EE Copyright Michel Buffa

19/10/2004

La persistance par srialisation


n

Srialisation = sauvegarde de l'tat d'un objet sous forme d'octets.


n Rappel : l'tat d'un objet peut tre quelque chose de trs

compliqu.
n Etat d'un objet = ses attributs, y compris les atributs hrits. n Si les attributs sont eux-mme des instances d'une classe, il

faut sauvegarder aussi les attributs de ces instances, etc n n

A partir d'un tat srialis, on peut reconstruire l'objet En java, au travers de l'interface java.io.Serializable, des mthodes de java.io.ObjectInputStream et java.io.ObjectOutputStream

La persistance par srialisation


n n n

Dfauts nombreux Gestion des versions, maintenance Pas de requtes complexes


n

Ex : on srialize mille comptes bancaires. Comment retrouver ceux qui ont un solde ngatif ?

Solution : stocker les objets dans une base de donne!

Cours EJB/J2EE Copyright Michel Buffa

19/10/2004

La persistance par mapping objet/BD relationelle


n n

On stocke l'tat d'un objet dans une base de donne. Ex : la classe Personne possde deux attributs nom et prenom, on associe cette classe une table qui possde deux colonnes : nom et prenom. On dcompose chaque objet en une suite de variables dont on stockera la valeur dans une ou plusieurs tables. Permet des requtes complexes.

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

Dtermination 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 n n n n

Les Base de donnes objet stockent directement des objets. Plus de mapping ! Object Query Language (OQL) permet de manipuler les objets Relations entre les objets videntes (plus de join) 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 donne. Ils utilisent un mcanisme de persistance (parmi ceux prsents) Ils servent reprsenter sous forme d'objets des donnes situes dans une base de donne
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, lve, examen, note,

Mais au fait, pourquoi nous embter passer par des objets ?


n Plus facile manipuler par programme, n Vue plus compacte, on regroupe les donnes dans un objet. n On peut associer des mthodes simples pour manipuler ces

donnes
n On va gagner la couche middleware !

Cours EJB/J2EE Copyright Michel Buffa

19/10/2004

Exemple avec un compte bancaire

On lit les informations d'un compte bancaire en mmoire, dans une instance d'un entity bean, On manipule ces donnes, on les modifie en changeant les valeurs des attributs d'instance, Les donnes seront mises jour dans la base de donnes automatiquement ! Instance d'un entity bean = une vue en mmoire des donnes physiques

Fichiers composant un entity bean


n

Idem session beans : interface locale, remote , home, local home, classe du bean, descripteur. Quelques particularits cependant
n La classe du bean se mappe dans une base de donnes. n Elle doit fournir certaines mthodes obligatoires, qui seront

appeles par le container + des mthodes de manipulation simples des donnes. n Il est ncessaire d'avoir une classe du type de la cl primaire du bean. n Cl primaire = un objet srializable, unique pour chaque instance. C'est la cl primaire au sens SQL.

Cours EJB/J2EE Copyright Michel Buffa

19/10/2004

Caractristiques des entity beans


n n

Survivent aux crashes du serveur, du SGBD Ce sont des vues sur des donnes dans un SGBD

Caractristiques des entity beans


n

Plusieurs instances d'entity beans peuvent reprsenter les mmes donnes


n n n

n n

Plusieurs client peuvent accder aux mmes donnes (compte bancaire par exemple) Un seul thread par bean dans le modle EJB, code plus simple crire, Mais alors, il faut synchroniser les beans en mmoire pour qu'ils se rafrachissent lorsque les donnes changent. Mais oui ! On peut mme modifier les donnes dans le SGBD depuis un mcanisme extrieur ! Dpend de la politique de transaction du bean.

Cours EJB/J2EE Copyright Michel Buffa

19/10/2004

Caractristiques 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

Caractristiques des entity beans


n

Pas si simple que pour les Session Beans


n

Comment librer les ressources (connexions, sockets)

Deux mthodes de callback


n

ejbActivate() : appele par le container lorsque le bean va recevoir un nouvel EJBObject et de nouvelles donnes dont une cl primaire. Dans ce callback on doit acqurir des ressources (socket) n ejbPassivate() : appele lorsque le bean va tre swapp sur disque. Il faut librer les ressources.

Cours EJB/J2EE Copyright Michel Buffa

19/10/2004

Caractristiques des entity beans


n

Juste avant la passivation, la mthode ejbStore() est appele. Elle s'occupe de sauvegarder l'tat du bean dans une BD. Idem, au moment de l'activation, le bean doit lire son tat depuis la BD. Ceci est ralis en appelant ejbLoad().

Caractristiques des entity beans

Cours EJB/J2EE Copyright Michel Buffa

19/10/2004

Deux manires d'assurer la persistance


n

Bean Managed Entity Bean (BMP)


n Persistance effectue la main, le plus souvent avec

JDBC/SQL, si la BD est relationnelle.


n Sauvegarde, relecture, recherche, tout est faire par le

programmeur + dterminer l'tat d'un objet (peut devenir trs 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 dploiement. n Rduit la taille du code, n Dveloppement plus rapide Grosse plus-value du modle

EJB.

Cration d'entity beans

10

Cours EJB/J2EE Copyright Michel Buffa

19/10/2004

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. Similaire un SELECT Se traduit par la prsence de mthodes "finders" dans l'interface HOME
n

n n

findByPrimaryKey(), findAll() findCheapProducts()

Plus d'informations dans les prochains chapitres

11

Cours EJB/J2EE Copyright Michel Buffa

19/10/2004

Modifier les donnes 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(); }

12

Cours EJB/J2EE Copyright Michel Buffa

19/10/2004

Contexte d'un entity bean


n

getEJBLocalObject() et getEJBObject() permettent d'obtenir une rfrence sur l'EJB Object associ au bean.
n

Le this pour les EJB !

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


n

On l'utilise depuis ejbLoad() pour savoir quelle donne il faut lire. n Depuis ejbRemove(), pour savoir quelle donne il faut supprimer.

13

Das könnte Ihnen auch gefallen