Le Standard EJB3 par la pratique - PowerPoint PPT Presentation

1 / 49
About This Presentation
Title:

Le Standard EJB3 par la pratique

Description:

Le Standard EJB3 par la pratique R alis par: MEDINI Soumaya MEJRI Nassiha 2005-2006 Plan g n ral Introduction Historique Complexit s de EJB2 Les apports de EJB3 ... – PowerPoint PPT presentation

Number of Views:223
Avg rating:3.0/5.0
Slides: 50
Provided by: teamsofts
Category:
Tags: ejb3 | par | pratique | standard

less

Transcript and Presenter's Notes

Title: Le Standard EJB3 par la pratique


1
Le Standard EJB3 par la pratique
  • Réalisé par MEDINI Soumaya
  • MEJRI Nassiha
  • 2005-2006

2
Plan général
  • Introduction
  • Historique
  • Complexités de EJB2
  • Les apports de EJB3
  • Demo
  • Conclusion

3
INTRODUCTION (1)
  • Evolution importante concernant le modèle de
    composant JEE les EJB2 deviennent les EJB3.
  • Nouveau JEE
  • - Thèmes Simplification de
    développement
  • - Intégration JSF 1.2 (JSR 252) Java
    Specification Request
  • - EJB 3.0 (JSR 220 )
  • JSR220-ORM apporte l'ensemble des outils
    nécessaires à la persistance Java
  • EJB3 nécessite un JDK 1.5.0

4
INTRODUCTION (2)
  • Critique des Enterprise JavaBeans (EJB) par
    plusieurs developpeurs à cause de ses
    complexités.
  • Gavin King, leader du Framework Hibernate et
    membre du groupe d'experts EJB 3 a dévoilé le
    premier brouillon de cette spécification EJB3
  • Cette nouvelle version des EJB apporte des
    modifications notables dans le domaine du modèle
    de développement et intègre de nombreuses
    nouveautés notamment en ce qui concerne les EJBs
    entity tellement décrites dans les versions 2.X.

5
Historique
  • Mars 1998 EJB 1.0
  • Novembre 1999 EJB 1.1
  • - sécurité, entity beans,
  • Août 2001 EJB 2.0
  • - Local interfaces, relationships,
    EJB-QL, MDBs
  • Novembre 2003 EJB 2.1
  • - EJB-QL (order by, avg, max, min, sum,
    count, EJB Timer service)
  • Février 2005 EJB 3.0

6
  • Quelles sont les complexités des EJB2.X?

7
Les complexités de EJB 2.x (1)
  • EJBs sont contre-productifs
  • - 1 bean a des dépendences avec
    EJBLocalObject, EJBLocalHome, EJBHome, EJBObject,
    ejb-jar.xml
  • - Les outils pour masquer la complexité
    ne sont pas forcément à la hauteur
  • -Difficile à tester !
  • Necessité davoir une connaissance détaillée à
    propos du JNDI pour réussir une application EJB.

8
Les complexités de EJB 2.x (2)
  • Les EJB components ne sont pas totalement
    orientés objet (pb pour lheritage et le
    polymorphisme)
  • ? les classes persistantes doivent hériter de
    certaines classes fournies par le framework
  • Entity Beans
  • - EJB-QL est à la rescousse en
    pratique, trop limité et statique
  • -JDO, iBatis, Hibernate sont plus
    simples et plus appropriés

9
Les complexités de EJB 2.x (3)
  • verbose beaucoup de fichiers à écrire
  • Compléxité des descripteurs de déploiement (EJB).
  • Difficulté dutiliser les classes persistantes en
    dehors du container en particulier pour les tests
  • Le framework ne peut pas prendre en charge la
    persistance dobjets des classes Java ordinaire
    (POJO)

10
Les complexités de EJB 2.x (4)
  • Certains containers nécessitent une génération de
    stubs (JOnAS,..)
  • D'autres génèrent les proxys automatiquement
    (JBoss, Geronimo)
  • Des containers génèrent des finders
    automatiquement (JBoss)
  • Le développement multi-container est complexe
  • Mais ne pas en tenir compte est aussi un risque

11
Les complexités de EJB 2.x (5)
  • Donc
  • EJB 2.1 aujourd 'hui puissant, mais complexe à
    utiliser!

12
  • Quels sont les apports de EJB3?

13
Apports dEJB3  (1)
  • Simplifier le développement pour palier à un
    modèle de programmation complexe menant à un
    certain nombre d'anti-patterns (utilisation de
    DTO, Entity Beans, ...).
  • Simplifier larchitecture des EJBs en réduisant
    sa complexité de point de vue développeur
  • Génération automatique d'interface possible
  • Pas de JNDI pour le développeur ou le client

14
Apports de EJB3 (2)
  • Simplification des composants par l'utilisation
    des POJOs / JavaBeans
  • Elimination des interfaces EJBObject,
    EJBLocalObject, Remote, Home,
  • Simplification des CMPs
  • Extension de EJBQL jointures, subqueries,
    dynamic queries, native SQLqueries,

15
Apports de EJB3 (3)
  • Améliorer la testabilité hors du container
  • Utilisation des metadata pour simplifier la
    maintenance des composants
  • Simple annotations
  • Utilisation systématique des annotations pour
    simplifier la programmation.
  • Elimination de descripteur de deploiement
  • Génération des interfaces dont on a besoin

16
Apports de EJB3 (4)
  • Descripteur Déploiement EJB 2.1
  • ltsessiongt
  • ltejb-namegtShopCartBeanlt/ejb-namegt
  • ltlocal-homegtShopCartHomelt/local-homegt
  • ltlocalgtShopCartlt/localgt
  • ltejb-classgtcom.example.ShopCartBeanlt/ejb-cla
    ssgt
  • ltsession-typegtStatefullt/session-typegt
  • lttransaction-typegtContainerlt/transaction-typ
    egt
  • ltresource-refgt
  • ltres-ref-namegtjdbc/myDBlt/res-ref-namegt
  • ltres-ref-typegtjavax.sql.DataSourcelt/res-ref-
    typegt
  • ltres-authgtContainerlt/res-authgt
  • lt/resource-refgt
  • lt/sessiongt
  • ...
  • ltassembly-descriptorgt
  • ...
  • lt/assembly-descriptorgt

17
Apports de EJB3 (5)
  • Pour EJB3

18
Compatibilité et migration
  • Une application EJB 2.1 doit fonctionner
    inchangée dans un conteneur EJB 3.0
  • Migration vers EJB 3.0
  • - Client EJB 3.0 Composant EJB 2.1
  • - Client EJB 2.1 Composant EJB 3.0

19
Apports de EJB3 (6)
  • EJB 3 définit un standard de persistance
    qui ne cible que le relationnel à lexclusion des
    autres formes de données (XML, mainframe) et qui
    ne peut sexécuter que dans le contexte dun
    container (à lexclusion des applications Swing,
    JSP ou batch par exemple).

20
Apports dEJB3 (7)
  • Conclusion
  • EJB3.0 Simplification des Développements
    avec Compatibilité et Migration
  • EJB3.0 EJB2.X XDoclet

21
EJB3 POJO (1)
  • POJOPlain Old Java Objects (bons vieux objets
    Java tous simples)
  • Utiliser un modèle objet simple (facile à
    développer, centré sur l'applicatif plus que sur
    le technique) et sans dépendances avec telle API
    ou tel framework.
  • Dans le monde Java, le modèle EJB3 ou les deux
    frameworks de persistance Hibernate et TOPlink
    sont les trois solutions les plus utilisées pour
    assurer la persistance des concepts métier
    implémentés sous forme de POJO

22
EJB3 POJO (2)
  • EntityManager
  • EntityManager est un point de contrôle (home)
    pour les opérations sur les EJB entité
  • 1- Méthodes de cycle de vie
  • - Persist, remove, merge, flush,
    refresh, etc
  • 2- Méthodes de requêtage pré-définies
    (find)

23
EJB3 POJO(4)
  • 3- Factory pour des objets Query
  • - Requêtes (nommées) statiques et
    dynamiques
  • - Requêtes EJB-QL et SQL
  • 4- Gestion du contexte de persistance
  • - Réunion des identités persistantes
  • - Contexte étendu de persistance
    (transactions multiples)
  • 5- Concept similaire à celui de Hibernate
    Session, JDO PersistenceManager,..

24
EJB3 POJO (3)
  • Cycle de vie

25
POJO cycle de vie
  • New
  • - Pas d 'identité de persistance
  • - Pas associé au conteneur
  • Managed
  • - Identité de persistance
  • - Géré par le conteneur
  • - Synchronisation SGBDR
  • - Gestion des relations

26
POJO cycle de vie
  • Detached
  • - Identité de persistance
  • - Non géré par le conteneur
  • - Necessité de la synchronisation
  • Removed
  • Identity de persistance
  • Suppression du bean

27
Annotations (1)
  • Introduites dans JDK1.5 (JSR 175), alternatives à
    XDoclet
  • Rendent les descripteurs de déploiement
    facultatifs
  • Moins de verbosité pour les cas simples
  • Meta-données proche du code
  • gestion de source simplifiée
  • Alléger le code

28
Annotations(2)
  • Annotations EJB 3.0
  • 1- Nature de l'EJB
  • - _at_Stateless, _at_Stateful,
    _at_MessageDriven ou _at_Entity
  • 2- Accès distant ou local
  • - _at_Remote, _at_Local
  • - Plus de RemoteException
  • 3- Cycle de vie
  • - _at_PostConstruct, _at_PostActivate,
    _at_Remove, _at_PreDestroy, _at_PrePassivate

29
Annotations(3)
  • _at_Entity indique que le User class est un bean
    entité.
  • _at_EJB configure la valeur EJB pour chaque méthode
  • _at_Id annotation indique lattribut de la clé
    primaire du bean entité
  • _at_Table spécifie la table de base de données pour
    les bean entité

30
Annotations (4)
  • _at_SecondaryTable spécifie la table secondaire
  • _at_Serialized specifie que la propriété persistante
    doit être serializable
  • _at_JoinColumn spécifie la colonne de jointure avec
    la colonne secondaire
  • _at_OneToMany Specifie le champ comme une
    relation1-n

31
INJECTION
  • Le composant déclare ce dont il a besoin au
    travers de meta-données
  • Le conteneur fournit au composant ce qu'il
    réclame
  • - Les ressources et services nécessaires à
    un composant sont injectées à la création de
    chaque instance de composant
  • Transactions
  • Notifications de cycle de vie
  • Mécanisme de persistance

32
Les annotations dinjection
  • _at_EJB
  • - Annote les interfaces métier des EJB
  • - Annote les interfaces Home
  • _at_Inject ou _at_PersistenceContext
  • - Permet l 'injection de tout ce qui se
    trouve dans JNDI
  • - Permet d 'injecter SessionContext,
    UserTransaction, EntityManager, ...
  • _at_Resource
  • - Annote toute le reste (ou presque)
  • - Injection de variable d 'instance ou de
    setter

33
Annotations vs. Descripteur Déploiement
  • Le descripteur de déploiement reste pertinent
  • - Pour un développeur ou l 'entreprise qui
    a ses habitudes
  • - Pour externaliser des meta-informations
  • - Pour redéfinir des annotations

34
EJB3 Bean Session(1)
  • Spécification par _at_Stateful ou _at_Stateless
  • stateful session beans sont transitoires
  • _at_Remove spécifier au conteneur que le stateful
    session bean instance peut être supprimé

35
EJB3 Bean Session(2)
36
EJB3 Bean Session(2)
Pour indiquer que cette classe est un stateless
session bean
37
EJB3 Bean Session(2)
injection de tout ce qui se trouve dans JNDI
38
EJB3 Entity Bean(1)
  • Un EJB entité devient une simple classe Java
  • 1- Classe concrète
  • 2- Héritage et polymorphisme
  • 3- Méthodes getXX/setXX pour les propriétés
    persistantes
  • 4- Pas d 'interface à implémenter
  • 5- Pas de méthode de callback requise
  • Specifié par lannotation _at_Entity

39
EJB3 Entity Bean(2)
  • Entity bean représente les données persistantes
    de la base de données
  • Entity beans sont aussi partagés par plusieurs
    clients
  • Utilisable comme objet détaché dans d'autres
    parties de l'application
  • 1- Plus besoin de Data Transfer Object
    (DTO)
  • 2- Doit implémenter Serializable

40
EJB3 Entity Bean(3)
41
EJB3 Entity Bean(3)
Spécifie la table de la base pour lentité bean
Spécifie le champ comme une relation n-1
Définit la clé étrangère
42
EJB3 Bean Message
  • Message-Driven Beans
  • Les beans messages (MDB) offrent une méthode
    simple pour implémenter une communication
    asynchrone.
  • MDBs sont crées pour recevoir des messages JMS
    asynchrones.
  • javax.jms.MessageListener interface
  • Annotation _at_MessageDriven.

43
EJB3 persistance (1)
  • La persistance ce terme est utilisé pour
    indiquer le fait qu'un objet peut être sauvegardé
    de façon plus ou moins automatisée
  • Le groupe EJB 3 a décidé de proposer une nouvelle
    technologie de persistance, totalement en
    opposition avec les choix précédents et en partie
    basée sur les concepts de JDO

44
EJB3 persistance (2)
  • La notion de persistance
  • Simple et incomplète avant EJB 3.0
  • Nécessite de trouver le lien entre approche
    object et relationnel
  • EJB 3.0 propose au développeur d'établir
    simplement un mapping entre domaine métier
    (objet) et base de données relationnelle

45
EJB3 persistance (3)
  • 4. Le développeur a conscience de l'existence de
    ce mapping entre schéma SGBDR et modèle objet
  • - Dans la manipulation des requêtes
  • - Dans l 'utilisation des annotations
    dédiées au mapping O/R
  • - Dans les règles de configuration par
    défaut

46
EJB3 persistance (4)
  • Objets persistants
  • Objets à vie courte contenant l'état de
    persistance et la fonction métier.
  • Ils sont en général les objets de type JavaBean
    (ou POJOs)
  • La seule particularité est qu'ils sont associés
    avec une (et une seule) Session.

47
  • DEMO. . .

48
Conclusion
  • EJB 3.0 Simplification drastique pour le
    développeur
  • 1- Suppression de classes et d 'interfaces
  • 2- Modèle d 'injection de services et de
    ressources
  • 3- Descripteurs de déploiement rendus
    facultatifs
  • 4- EJB entité POJO
  • 5- Capacités de requêtage améliorées
  • 6- Spécification du mapping O/R
  • EJB 3.0 constitue les fondations de JavaEE 5.0
    pour le développeur

49
  • Merci pour votre attention. . .
Write a Comment
User Comments (0)
About PowerShow.com