|
Entity ejb qu'est ce qu'un entity ejb
|
tarix | 26.07.2018 | ölçüsü | 445 b. | | #59689 |
|
Entity EJB
Il présente les comportements suivants : - c'est la représentation de données persistantes
- ils survivent à un crash du SA
- plusieurs clients
- l'instance EJB contient une copie des données du système de persistance
Gestion de la persistance Les attributs de l'objet doivent être stockés sur un support de persistance Systèmes de persistance : - Sérialisation
- Mapping SGBD à travers JDBC
EJB Entité partagée Quand plusieurs clients partagent le même EJB - Ils reçoivent leur propre instance d'EJB
- Partagent les données
- N'ont pas à gérer la synchronisation
Clés Primaires Chaque EJB Entité possède un ensemble d'attributs qui sont uniques lorsqu'ils sont agrégés Ces attributs agrégés s'appellent la clé primaire
Mapping Objet <->Relationnel Le mapping stocke chaque objet dans une seule ligne d'une table Une colonne de la base est associée à chaque attribut de la classe
EJB entité identiques Deux entités sont identiques si le contenu de leur clé primaire sont identiques Persistance :
Différence entre le dvlp Entity / Session Il faut écrire une classe représentant la PK L'interface Home présente une méthode findByPrimaryKey(
) L'interface Home peut présenter d'autres méthodes find La classe du bean implémente l'interface javax.ejb.EntityBean La classe du bean doit fournir une méthode ejbCreate ET une méthode ejbPostCreate() pour chaque méthode create de l’interface home. - ==> A quoi sert le postCreate ?
PK Class Une classe de clé primaire - est déclarée public
- implante serializable
- possède un constructeur sans argument
- présente tous ses attributs public
- public class AlarmClockPK implements java.io.Serializable
- {
- }
NB : Les attributs de la PK doivent se retrouver dans le bean
Création d'un EJB entité CMP
Interfaces Home Les interfaces Home doivent inclure des méthodes de recherche public findByPrimaryKey(
pk) Les autres méthodes : public findNimporteComment(...) throws FinderException, RemoteException; public Enumeration findNimporteComment(...) throws FinderException, RemoteException;
Expression de recherche Syntaxe LISP-like - opérateur opérande1 opérande2
Opérateurs disponibles - (), =, <, <=, >, >=, !, &, |, like
Opérandes possibles - 1) une autre expression
- 2) un attribut d'un EJB
- 3) un paramètre récupéré dans l ’invocation du find
Exemple : (> balance $amount) (& (> bal $amount) (!(=accountType ‘ checking ’))) (= 1 1) (like lastName M%)
La classe doit implanter l'interface EntityBean public interface EntityBean extends EnterpriseBean { public void ejbActivate (); public void ejbPassivate(); public void ejbLoad(); public void ejbStore(); public void setEntityContext(EntityContext ctx); public void unsetEntityContext (); public void ejbRemove (); } Autres points - Les méthodes ejbCreate retournent void pour les CMP
- Il n’est pas nécessaire de développer des méthodes find pour les CMP
Exemple Un système de paramétrage de reveil L ’EJB enregistre - L’heure de l’alarme
- La station sélectionnée
- La bande sélectionnée
Interface Remote public interface AlarmClock extends EJBObject { public Date getAlarmTime() throws RemoteException; public String getRadioStation() throws ...; public boolean isFmSet() throws...; public void isFmset(boolean fm) ... public void setAlarmTime(Date time) ...; ... setRadioStation(String station)... }
AlarmClock primary Key Class: public class AlarmClock implements Serializable { pulic int idAlarm; } AlarmClock interface Home public interface AlarmClockHome extends EJBHome{ AlarmClock create() throws CreateException, RemoteException; AlarmClock create(Date time, String station, boolean fm) throws CreateException, RemoteException; AlarmClock findByPrimaryKey(AlarmClock id) throws FinderException, RemoteException; Enumeration findAllFMSettings() throws FinderException, RemoteException; }
public class AlarmClockBean implements EntityBean{ public int idAlarm; transient protected EntityContext context; public String station; public String wakeUpTime; public boolean isFm; public void ejbActivate(){} public void ejbLoad(){} public void ejbPassivate(){} public void ejbRemove(){} public void ejbStore(){} ...
La suite de la classe du Bean... this.idAlarm=(int) (Math.random()*100000); Properties props=context.getEnvironment(); this.station=props.getProperty("Station"); this.isFm=props.getProperty("isFM"); this.wakeUpTime=props.getProperty("Time"); public void ejbCreate(String time, String station, boolean isFM){ this.idAlarm=(int)(Math.Random()*100000); this.wakeUpTime=time; this.station=station; this.isFM=new Boolean(isFM).toString(); } public void ejbPostCreate(){} public void ejbPostCreate(String time, String station, boolean isFm){}
Le cas des BMP Il faut coder soit même la gestion de la persistance pour les méthodes ejbCreate, ejbRemove, ejbLoad, ejbStore La méthode ejbCreate renvoie dans ce cas une instance de la classe PK les méthodes ejbFind doivent être codées.
Dostları ilə paylaş: |
|
|