Cours4_EJB

15
EJB A.-E. Ben Salem LRDE and LIP6 17 Octobre 2011 1 / 15

description

EJB

Transcript of Cours4_EJB

Page 1: Cours4_EJB

EJB

A.-E. Ben Salem

LRDE and LIP6

17 Octobre 2011

1 / 15

Page 2: Cours4_EJB

Rappel

http://info-j2ee.blogspot.fr/2007/12/blog-post.html 2 / 15

Page 3: Cours4_EJB

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

Page 4: Cours4_EJB

Architecture

sd-41336.dedibox.fr/hagimont/resources-N7/internet/3-ejb.pdf 4 / 15

Page 5: Cours4_EJB

Exemple

sd-41336.dedibox.fr/hagimont/resources-N7/internet/3-ejb.pdf 5 / 15

Page 6: Cours4_EJB

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

Page 7: Cours4_EJB

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

Page 8: Cours4_EJB

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

Page 9: Cours4_EJB

Exemple

sd-41336.dedibox.fr/hagimont/resources-N7/internet/3-ejb.pdf 9 / 15

Page 10: Cours4_EJB

Entity Bean: mapping OneToMany

Mapping “OneToMany”: Relation (1 – n) entre 2 Tables (utilisant le“FOREIGN KEY”)

10 / 15

Page 11: Cours4_EJB

Entity Bean: mapping ManyToOne

Mapping “ManyToOne”: Relation (n – 1) entre 2 Tables (Relationinverse du “OneToMany”):

11 / 15

Page 12: Cours4_EJB

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

Page 13: Cours4_EJB

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

Page 14: Cours4_EJB

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

Page 15: Cours4_EJB

Archives L déployer dans les 2 Conteneurs

http://www.jmdoudoux.fr/java/ 15 / 15