Vous êtes sur la page 1sur 15

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

Prsentation
I EJB : Enterprise Java Beans
I Un "composant" qui encapsule de la logique applicative
I
I
I

accs a une base de donnes


gestion de transactions
contrle de concurrence

I Les services systmes sont fournis par le container:


I
I
I
I

persistence
transaction
securite
cycle de vie

I Utilisation massive des annotations Java sur des POJO


I
I

separation des concepts metiers et non fonctionnels


on garde la puissance objet (hritage, . . . )

I Occupe la partie modle 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 Mcanisme standard dans le langage Java depuis version 5 (1.5)
I Ide similaire aux commentaires Javadoc
I

informations attaches des lments de programme (classe,


mthode, attributs, ...)
pour ajouter de linformation sur cet lment

I @Identificateur
I Avec des paramtres : @Identificateur(attribut=value,...)
I

types autoriss:
primitifs, String, Class, annotation
tableaux de primitifs, String, Class, annotation

I Eventuellement plusieurs annotations par lment


Exemple:
@Entity
@Table(name="STOCK")
public class StockEntityBean { . . . }

6 / 15

Entity Bean (EJB Entity)

I Reprsentation dune donne manipule par lapplication


I Donne typiquement stocke dans un SGBD (accessible en
JDBC)
I Correspondance Objet tuple relationnel (mapping O/R)

I Avantage : manipulation dobjets Java plutt que de requtes SQL


I Mise en oeuvre laide:
I
I

dannotations Java 5 et de la gnricit Java 5


de lAPI JPA (Java Persistence API): EntityManager, . . .

7 / 15

Entity Bean (dveloppement)

I Annotation @Entity : dclare une Classe correspondant un


entity bean
I Chaque Classe dEntity Bean est mise en correspondance avec
une Table de la BD:
I
I

par dfaut Table avec mme nom que la Classe


sauf si annotation @Table(name="...")

I mapping des colonnes des tables:


I
I
I
I

par dfaut colonne avec mme nom que lattribut de la Classe


sauf si annotation @Column(name="...")
annotation @Id : dfinit une cl primaire
colonne auto-incrment: 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 (Relation
inverse du OneToMany):

11 / 15

Session Bean (EJB Session)

I Session Bean : reprsente un traitement (services fournis un


client)
I Stateless session bean
I
I
I

sans tat
ne conserve pas dnformation entre 2 appels successifs
2 instances quelconques dn tel bean sont quivalentes

I Stateful session bean


I
I
I
I

avec un tat (en mmoire)


similaire session servlet/JSP
mme instance pendant toute la dure dune session avec un client
1 instance par client

12 / 15

Utilisation dun EntityManager (Gestionnaire dentits)


dans un Session Bean
Exemple de Session Bean (Facade) : cration de trois enregistrements
dans la table des livres

13 / 15

Appel dun Session Bean partir dune Servlet

Client local (colocalise sur le mme serveur que le Bean) = une


Servlet possdant:
I un attribut de type linterface Local du Bean:
private MyBeanItf myBeanFacade;

I annot par @EJB (injection de dpendance)


public class ServletClient extends HttpServlet {
@EJB
private MyBeanItf myBeanFacade;
protected void doGet(. . . ) {
...
List<Book> books = myBeanFacade.findAllBooks();
...
}
}

14 / 15

Archives L dployer dans les 2 Conteneurs

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

15 / 15

Vous aimerez peut-être aussi