Cours4_EJB
-
Upload
prince-godasse-okitembo -
Category
Documents
-
view
214 -
download
0
description
Transcript of Cours4_EJB
EJB
A.-E. Ben Salem
LRDE and LIP6
17 Octobre 2011
1 / 15
Rappel
http://info-j2ee.blogspot.fr/2007/12/blog-post.html 2 / 15
Présentation
I EJB : Enterprise Java BeansI Un "composant" qui encapsule de la logique applicative
I accés a une base de donnéesI gestion de transactionsI contrôle de concurrence
I Les services systèmes sont fournis par le container:I persistenceI transactionI securiteI cycle de vie
I Utilisation massive des annotations Java sur des POJOI separation des concepts metiers et non fonctionnelsI on garde la puissance objet (héritage, . . . )
I Occupe la partie modéle du design-patern MVC
3 / 15
Architecture
sd-41336.dedibox.fr/hagimont/resources-N7/internet/3-ejb.pdf 4 / 15
Exemple
sd-41336.dedibox.fr/hagimont/resources-N7/internet/3-ejb.pdf 5 / 15
Annotations Java 5
I Mécanisme standard dans le langage Java depuis version 5 (1.5)I Idée similaire aux commentaires Javadoc
I informations attachées à des éléments de programme (classe,méthode, attributs, ...)
I pour ajouter de l’information sur cet élémentI @IdentificateurI Avec des paramètres : @Identificateur(attribut=value,...)
I types autorisés:• primitifs, String, Class, annotation• tableaux de primitifs, String, Class, annotation
I Eventuellement plusieurs annotations par élémentExemple:@Entity@Table(name="STOCK")public class StockEntityBean { . . . }
6 / 15
Entity Bean (EJB Entity)
I Représentation d’une donnée manipulée par l’applicationI Donnée typiquement stockée dans un SGBD (accessible en
JDBC)I Correspondance Objet ↔ tuple relationnel (mapping O/R)
I Avantage : manipulation d’objets Java plutôt que de requêtes SQLI Mise en oeuvre à l’aide:
I d’annotations Java 5 et de la généricité Java 5I de l’API JPA (Java Persistence API): EntityManager, . . .
7 / 15
Entity Bean (développement)
I Annotation @Entity : déclare une Classe correspondant à unentity bean
I Chaque Classe d’Entity Bean est mise en correspondance avecune Table de la BD:
I par défaut Table avec même nom que la ClasseI sauf si annotation @Table(name="...")
I mapping des colonnes des tables:I par défaut colonne avec même nom que l’attribut de la ClasseI sauf si annotation @Column(name="...")I annotation @Id : définit une clé primaireI colonne auto-incrémenté: Annotation @GeneratedValue Exemple:
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator ="book_sequence")
8 / 15
Exemple
sd-41336.dedibox.fr/hagimont/resources-N7/internet/3-ejb.pdf 9 / 15
Entity Bean: mapping OneToMany
Mapping “OneToMany”: Relation (1 – n) entre 2 Tables (utilisant le“FOREIGN KEY”)
10 / 15
Entity Bean: mapping ManyToOne
Mapping “ManyToOne”: Relation (n – 1) entre 2 Tables (Relationinverse du “OneToMany”):
11 / 15
Session Bean (EJB Session)
I Session Bean : représente un traitement (services fournis à unclient)
I Stateless session beanI sans étatI ne conserve pas dínformation entre 2 appels successifsI 2 instances quelconques dún tel bean sont équivalentes
I Stateful session beanI avec un état (en mémoire)I similaire session servlet/JSPI même instance pendant toute la durée d’une session avec un clientI 1 instance par client
12 / 15
Utilisation d’un EntityManager (Gestionnaire d’entités)dans un “Session Bean”
Exemple de Session Bean (Facade) : création de trois enregistrementsdans la table des livres
13 / 15
Appel d’un Session Bean à partir d’une Servlet
Client local (colocalisée sur le même serveur que le Bean) = uneServlet possédant:I un attribut de type l’interface “Local” du Bean:
private MyBeanItf myBeanFacade;
I annoté par @EJB (injection de dépendance)public class ServletClient extends HttpServlet {
@EJBprivate MyBeanItf myBeanFacade;
protected void doGet(. . . ) { . . .List<Book> books = myBeanFacade.findAllBooks();. . .
}}
14 / 15
Archives L déployer dans les 2 Conteneurs
http://www.jmdoudoux.fr/java/ 15 / 15