IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java EE Discussion :

Différence entre JavaBeans et EJB


Sujet :

Java EE

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 113
    Points : 42
    Points
    42
    Par défaut Différence entre JavaBeans et EJB
    Bonjour

    Je suis novice J2EE et j'aimerais savoir la ou les différences en JavaBeans et EJB.
    D'apres mes recherches sur internet, on préconise l'utilisation de JPA. Qu'en pensez-vous ? Sachant bien-sur que JPA en tout nouveau.

    Merci pour votre contribution.

  2. #2
    Membre régulier
    Homme Profil pro
    Architecte technique
    Inscrit en
    Mars 2006
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mars 2006
    Messages : 58
    Points : 73
    Points
    73
    Par défaut
    Hum, les JAVABeans et EJB ne sont pas du tout la même chose.
    De souvenirs, un JavaBean est une classe toute simple dont tous les attributs publics sont accessible/modifiables via des getters et setters.
    Par contre, un EJB est une classe spécifique JAVA à destination des serveurs J2EE (JOnAS, JBOSS, ...). Il y a différent type d'EJB. Le mieux est encore de regarder la FAQ.
    Dans ingénieur il y a génie. Alors prouvez le !

  3. #3
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Alors, un bean, à l'origine, était une classe java qui respectait certaines règles :
    - un constructeur public vide
    - des propriétés avec des getter/setter normalisés
    - doit être serializable

    (pour plus de détails, http://fr.wikipedia.org/wiki/JavaBeans)

    Un EJB est autre chose.

    Déjà, il s'exécute dans un conteneur spécial sur un serveur JEE.
    Il existe différent type d'EJB, les Entity qui représentent un enregistrement ou une vue de la DB, les EJB message, les EJB stateless ou statefull.
    Dans le cadre des Entity, on distingue les BMP et les CMP.
    Les BMP laissent à la charge du Bean de faire les différents accès à la DB (via JDBC par exemple) alors que les CMP laissent à la charge du conteneur le code d'accès à la DB.

    (pour plus de détail, http://fr.wikipedia.org/wiki/Enterprise_JavaBeans)

    Le JPA maintenant, est impliqué par les EJB3. Pour faire simple, EJB3 définit une norme et un langage de manipulation des données et le JPA s'occupe de faire le boulot réellement.

    J'espère que c'est plus clair pour toi...

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 40
    Points : 47
    Points
    47
    Par défaut
    Mais maintenant qu'il y a ejb3 :

    un ejb3 = javabean + annotations

    JPA est un ensemble d'annotations qui gère la persistance des ejb Entity

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 310
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par alpha.omega Voir le message
    JPA est un ensemble d'annotations qui gère la persistance des ejb Entity
    Ben non, c'est une API qui gère la persistance. Les annotations viennent de la version 5 de java.
    Dans le cadre des EJB3, on peut avoir un JPA Hibernate3 ou Toplink ou autre...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 40
    Points : 47
    Points
    47
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Ben non, c'est une API qui gère la persistance. Les annotations viennent de la version 5 de java.
    Dans le cadre des EJB3, on peut avoir un JPA Hibernate3 ou Toplink ou autre...
    A vouloir aller trop vite, je me suis mal exprimé.

    Les annotations viennent effectivement de java 5. L'API JPA permet notamment de les utiliser à la place d'un fichier XML (format bien trop verbeux à mon goût) pour gérer la persistance d'un bean. Voilà pour la relation entre les annotations et JPA (les 2 concepts n'ont rien à voir, mais l'un utilise l'autre).

    Ensuite, JPA est une spécification dont Hibernate et TopLink sont les implémentations les plus en vue aujourd'hui. Ce qui veut dire que l'on utilise toujours JPA dans son code, mais en réalité c'est bien hibernate ou toplink qui est utilisé derrière.

    Enfin, je voulais quand même revenir à mon illustration de départ qui pour ma part m'a bien aidé à comprendre le lien entre un POJO et un ejb entity.

    Prenons un exemple simple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class Eleve implements Serializable{
    private long id;
    private String nom;
     
    + getters/setters
    + constructeur public sans arguments
     
    }
    est un javabean classique.

    Maitenant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    @Entity
    public class Eleve implements Serializable{
    @Id
    private long id;
    private String nom;
     
    + getters/setters
    + constructeur sans arguments
     
    }
    est un ejb entity.
    On remarque donc qu'un javabean décoré d'annotations jpa devient un ejb entity. D'où l' "équation" de départ :
    ejb3 = javabean + annotations

    Voilà, j'espère avoir été plus clair, je ne prétend pas être exhaustif mais je pense avoir explicité le lien entre un javabean et un ejb, et où jpa intervenait là dedans.
    En tout cas telle était ma volonté

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 113
    Points : 42
    Points
    42
    Par défaut
    Pour résumer ce que j'ai compris, je dirai que Hibernale, TopLink et autres implémentent la spécification JPA mais bien-sur font plus que ça.
    Par rapport à JavaBean, c'est une classe POJO qui respecte certaines règles. Pour les EJB, c'est un peu plus compliqué pour moi. Mais ce que je retiens c'est que ce sont des trois grandes services (Session, Entity et Message) coté serveurs. Suis-je dans le vrai ?

    A+

Discussions similaires

  1. Réponses: 6
    Dernier message: 30/01/2009, 11h26
  2. [EJB] Différence entre les EJB et les JavaBeans
    Par cool dans le forum Java EE
    Réponses: 6
    Dernier message: 22/05/2008, 20h24
  3. Différence entre JavaBean et EJB
    Par webspeak dans le forum Java EE
    Réponses: 2
    Dernier message: 11/12/2004, 14h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo