Tutorial Eclipse / WTP EJB Entit'ees

Publié par

Tutorial Eclipse / WTP
EJB Entit´ees
Matthieu EXBRAYAT, Universit´e d’Orl´eans
Matthieu.Exbrayat@univ-orleans.fr
Octobre 2006
1 Avertissement
Ce petit tutorial permet de prendre en main wtp sous eclipse pour la r´ealisation d’EJB entit´ees (CMP) et de relation
inter-entit´es (CMR). Ce tutorial poss`ede l’avantage de d´ecrire le fonctionnement avec des versions r´ecentes des logiciels
utilis´es.
Les noms des r´epertoires d’acc`es, notamment a` eclipse, xdoclets, jboss, peuvent diff´erer entre ce tutorial et les installations
r´ealis´ees en salle machine.
Vous trouverez plusieurs tutoriaux compl´ementaires sur internet :
http://www.eclipse.org/webtools/community/communityresources.html.
Ces tutoriaux en anglais couvrent un spectre plus large de mises en oeuvre, n´eanmoins les versions des logiciels utilis´ees
peuvent ˆetre plus anciennes et la mise en oeuvre l´eg`erement diff´erente de ce que vous serez ammen´es a` faire en manip.
2 Pr´esentation de l’exemple
l’exemple implant´e correspond au mod`ele suivant : des livres, des auteurs et des instances de livres. Il y a une cardinalit´e
n-n entre livre et auteur, et 1-n entre instance et livre. Les relations sont bidirectionnelles.
Nous d´ecrirons ici des entitys ne reposant pas sur des tables pr´e-existantes. En cons´equence chaque EJB sera param´etr´e
pour cr´eer la table correspondante lors de son d´eploiement.
3 cr´eation des EJB entit´e
Afin de ne pas trop g´en´erer de classes “parasites”, reconfigurer les xdoclets (Window ...
Publié le : lundi 2 mai 2011
Lecture(s) : 372
Nombre de pages : 12
Voir plus Voir moins
1
Avertissement
Tutorial Eclipse / WTP EJBEntite´es
MatthieuEXBRAYAT,Universite´dOrl´eans Matthieu.Exbrayat@univ-orleans.fr
Octobre 2006
Cepetittutorialpermetdeprendreenmainwtpsouseclipsepourlare´alisationdEJBentite´es(CMP)etderelation inter-entite´s(CMR).Cetutorialposse`delavantagedede´crirelefonctionnementavecdesversionsr´ecentesdeslogiciels utilis´es. Lesnomsdesr´epertoiresdacce`s,notamment`aeclipse,xdoclets,jboss,peuventdie´rerentrecetutorialetlesinstallations re´alise´esensallemachine. Voustrouverezplusieurstutoriauxcompl´ementairessurinternet: http://www.eclipse.org/webtools/community/communityresources.html. Cestutoriauxenanglaiscouvrentunspectrepluslargedemisesenoeuvre,ne´anmoinslesversionsdeslogicielsutilis´ees peuventˆetreplusanciennesetlamiseenoeuvrele´g`erementdie´rentedecequevousserezammen´es`afaireenmanip.
2
Pre´sentationdelexemple
lexempleimplante´correspondaumod`elesuivant:deslivres,desauteursetdesinstancesdelivres.Ilyaunecardinalit´e n-n entre livre et auteur, et 1-n entre instance et livre. Les relations sont bidirectionnelles. Nousd´ecrironsicidesentitysnereposantpassurdestablespre´-existantes.Enconse´quencechaqueEJBseraparame´tre´ pourcre´erlatablecorrespondantelorsdesond´eploiement.
3
cr´eationdesEJBentite´
Andenepastropge´n´ererdeclassesparasites,recongurerlesxdoclets(Window/preferences.../xdoclet/ejbdocletcomme indique´engure1. Parailleurs,pourquelerede´ploiementduprojetsefasseautomatiquementapr`eschaquemodication,modierlesparam`etres ded´eploiementdansWindow/preferences.../Server.meomcuqe´niidru2eneg
1
Figure 1: Configuration xdoclets ejbdoclet
3.1 EJB Author Cre´erunnouveauprojetJ2EE,etdanslesous-projetEJBfaireNew/Xdoclet EJBdans le menu contextuel. ChoisirContainer Managed Entity Bean, et cliquerNext. Indiquer le package (ejb) et le nom du bean (AuthorBean) (cf. fig. 3), cliquerNext. Danslafenˆetresuivante(param´etragedude´ploiement),modierleUseCase4) pour afficher(cf. fig. Define new attributes (pard´efautonvaexplorerunebasepoursemappersurunetableexistante,cequelonnesouhaitepasfairepourlinstant). CliquerNext. Donnerladescriptiondelatablea`cre´eretdumappingcommeindique´engure5.LacolonneNameindique le nom de l’attribut dans l’ejb,Columncelle de l’attribut correspondant dans la table.Typeindique le type de l’attribut de l’ejb,JDBC Typele type JDBC correspondant etSQL TypeNe pas oublier de cocher la casele type de l’attribut dans la table. Primary keyuqreurlapo.Clicl´eNextpuisFinish.
2
Figure2:Congurationduserveurpourrede´ploiementautomatique
Figure3:Cr´eationdelEJBentityAuthor(1)
Parde´faut,lentit´eestcr´e´eaveclesinterfaceslocaletremote.Nousallonstoutdabordsupprimerlesinterfacesremote anquelesentite´snesoientaccessiblesqua`traversunsessionfrontal.Pourcefaire,noussupprimonslesinterfaces AuthorHome.javaetAuthor.javade la liste des classes, puis dans le code de AuthorBean nous modifions les tags xdoclets de la classe en ajoutantview-type=”local”msdon,uosinors,anquelatableP.raialluei`emecerneononxitiose´rca`e´rpal l’attributcreate-tablea`truece qui donne :
/** * <!-- begin-xdoclet-definition -->
3
* * * * * * * * * * * * * * *
@ejb.bean name="Author" jndi-name="Author" type="CMP" primkey-field="authID" schema="AuthorSCHEMA" cmp-version="2.x" view-type="local"
@ejb.persistence table-name="AUTHOR"
Figure4:Cre´ationdelEJBentityAuthor(2)
Figure5:Cr´eationdelEJBentityAuthor(3)
@ejb.finder query="SELECT OBJECT(a) FROM AuthorSCHEMA as a" signature="java.util.Collection findAll()"
4
* @ejb.pk class="java.lang.Integer" * * * @jboss.persistence datasource="java:/DefaultDS" * datasource-mapping="Hypersonic SQL" table-name="AUTHOR" * create-table="true" remove-table="false" alter-table="false" * <!-- end-xdoclet-definition --> * @generated **/
public abstract class AuthorBean implements javax.ejb.EntityBean {
3.2 EJBs Book et Instance Nouscre´onscesdeuxEJBdelamˆememanie`requelapre´ce´dent,sansoublierlesmodicationsdestagsxdoclets,avecles attributs suivants :
bookID (Integer,pk) et bookTitle (varchar(20))Book :
Instance : instanceRef (varchar(10),pk)
Nous disposons maintenant de 9 classes et interfaces (fig. 6).
4
Figure6:Lesclassesetinterfacesge´ne´re´es
mise en place des relations
Lesrelationssontmisesenplacemanuellementparlebiaisdem´ethodesabstraitesetdetagsxdoclets.
4.1 Relation Livre-Auteur Cetterelationestbidirectionellen-n.Ellevadoncreposersurdesme´thodesmanipulantdescollections,etvasupposer lacr´eationdunetablesuppl´ementaireg´erantlesinstancesdelarelation.Enconse´quencedansundesdeuxbeansilfaut sp´eciercettetable(eticinepasoublierdedemandersacre´ation).Rappelonsnous´egalementquunerelationa`unnomet poss`ededeuxrˆolesde´nissantlarelationvudepuischaqueejb.Enconse´quencelecodesera,ducoˆt´eLivre:
/** * @ejb.interface-method
view-type="local"
5
* * @ejb.relation * name= "authbook" * role-name= "authorsofbook" * target-ejb= "AuthorLocal" * target-multiple= "yes" * * @jboss.relation related-pk-field="authID" * fk-column = "authID" * * @jboss.relation-table table-name="AUTHBOOK" create-table="true" */ public abstract java.util.Collection getAuthors();
/** * @ejb.interface-method view-type="local" */ public abstract void setAuthors(java.util.Collection authors);
etducˆote´Auteur:
/** * @ejb.interface-method view-type="local" * * @ejb.relation * name= "authbook" * role-name= "booksofauthor" * target-ejb= "BookLocal" * target-multiple= "yes" * * @jboss.relation related-pk-field="bookID" * fk-column = "bookID" */ public abstract java.util.Collection getBooks();
/** * @ejb.interface-method view-type="local" */ public abstract void setBooks(java.util.Collection books);
4.2 Relation Livre-Instance Cetterelationestbidirectionnellen-1.Nousmanipuleronsdoncduncoˆte´desinstancesetdelautredescollections,etla relationneserapasmane´trialise´eparunetablemaisparunattributsupple´mentairedanslejb(etlatable)ducoˆte´n,cest `adireducˆot´eInstance.Lecodeseradonc,ducˆot´einstance:
/** * @ejb.interface-method view-type="local" * * @ejb.relation * name= "instbook" * role-name= "bookofinstance" * target-ejb= "BookLocal" * target-multiple= yes" * * @jboss.relation related-pk-field="bookID" * fk-column = "bookID" */ public abstract BookLocal getBook();
6
Soyez le premier à déposer un commentaire !

17/1000 caractères maximum.