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 ...
l’exempleimplante´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.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),modifierleUseCase4) pour afficher(cf. fig. Define new attributes (pard´efautonvaexplorerunebasepoursemappersurunetableexistante,cequel’onnesouhaitepasfairepourl’instant). CliquerNext. Donnerladescriptiondelatablea`cre´eretdumappingcommeindique´enfigure5.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.
Parde´faut,l’entit´eestcr´e´eaveclesinterfaceslocaletremote.Nousallonstoutd’abordsupprimerlesinterfacesremote afinquelesentite´snesoientaccessiblesqu’a`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,uosfiinors,afinquelatableP.raialluei`emecerneononxitiose´rca`e´rpal l’attributcreate-tablea`truece qui donne :
public abstract class AuthorBean implements javax.ejb.EntityBean {
3.2 EJBs Book et Instance Nouscre´onscesdeuxEJBdelamˆememanie`requelapre´ce´dent,sansoublierlesmodificationsdestagsxdoclets,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).