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

JPA Java Discussion :

EntityManager dans session bean


Sujet :

JPA Java

  1. #1
    Membre expérimenté
    Inscrit en
    Décembre 2009
    Messages
    282
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 282
    Par défaut EntityManager dans session bean
    Bonjour,

    je fais un projet JEE que je dois réaliser premièrement avec JTA et deuxièmement sans JTA.

    Dans le premier cas j'ai réussi à initialiser mon EntityManager dans le bean de session, il suffit de mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @PersistenceContext(unitName="banque-ejbPU")
    Dans le deuxième cas je ne comprends pas comment l'on initialise l'EntityManager. En effet, j'ai vu qu'il fallait l'initialiser dans le Main du client de cette façon là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    EntityManagerFactory emf = null;
            EntityManager em = null;
            EntityTransaction tx =null;
            try {
                emf = Persistence.createEntityManagerFactory("banque-ejbPU");
                em = emf.createEntityManager();
                tx = em.getTransaction();
     
                tx.begin();
                // ...
                tx.commit();
            } catch (Exception e) {
                System.err.println(e);
                if (tx != null) {
                    tx.rollback();
                }
            } finally {
                if (em != null) {
                    em.close();
                }
                if (emf != null) {
                    emf.close();
                }
            }
    mais je ne comprends pas comment l'utiliser dans le Bean de session. Est-ce-que je dois l'initialiser de la même façon et démarer une transaction directement dans le bean de session ?

    Merci d'avance pour vos réponses !

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    heu, sans JTA, l'interface entitymanager n'existe pas, puisqu'elle fait partie de JPA.

  3. #3
    Membre expérimenté
    Inscrit en
    Décembre 2009
    Messages
    282
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 282
    Par défaut
    ah bon, donc comment on fait pour récupérer les objets de la base dans le bean de session alors ?

    enfin dans mon bean de session je suis censé implémentter cette méthode là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public List<Banque> getBanques(); // récupère toute les entités de la table "banque"
    donc comment je l'implante sans EntityManager ?

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    je suppose que par "sans JTA" on entends "en attaquant la base de données avec JDBC directement"?

  5. #5
    Membre expérimenté
    Inscrit en
    Décembre 2009
    Messages
    282
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 282
    Par défaut
    ba je ne sais pas trop .... j'ai pas eu vraiment de cours la dessus et c'est difficile de trouver des tutos qui réponde vraiment à ma question.

    Par "sans-JTA" je veux dire en ayant cette ligne là dans le fichier persistence.xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        <persistence-unit name="ormPU" transaction-type="RESOURCE_LOCAL">
    Apres est-ce-que ceci implique qu'on attaque par JDBC directement j'en sais rien ....
    Je sais que dans l'application cliente on passe toujours par l'Entity Manager, mais ce que j'aimerais savoir c'est comment on fait dans le session Bean ....
    peut-être on n'a vraiment plus a attaqué la BDD et quec 'est l'appli cliente qui se charge de tout .....

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    ou là, je suis à l'ouest. J'étais partis sur le "sans JPA" et pas "sans JTA", désolé.
    Sans JTA, tu dois toi même gérer la transaction, via la création de l'entitymanager. 9a se fait comem ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    EntityManagerFactory emf = Persistence
    				.createEntityManagerFactory("nomUnit");
    EntityManager em = emf.createEntityManager();
    em.getTransaction().begin();
    em.getTransaction().commit();

    Donc, forcément, son injection ne marche pas

  7. #7
    Membre expérimenté
    Inscrit en
    Décembre 2009
    Messages
    282
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 282
    Par défaut
    salut,

    merci pour ton aide, mais du coup c'est un peu déjà ce que j'avais fait ^^

    j'ai poursuivi dans cette voie là mais je tombe sur un nouveau problème, qui est le suivant :
    http://www.developpez.net/forums/d10...n/#post5717993

    merci pour toutes tes réponses !!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Dataprovider ou rowset dans le session Bean
    Par flotho dans le forum NetBeans
    Réponses: 1
    Dernier message: 13/09/2009, 11h35
  2. [JNDI] [EJB3] - Références JNDI dans un session bean
    Par motorenshi dans le forum Java EE
    Réponses: 2
    Dernier message: 01/09/2009, 21h47
  3. [Sécurité] Définition d'autorisations/rôles dans un Session Bean
    Par olator dans le forum Java EE
    Réponses: 0
    Dernier message: 08/04/2009, 20h01
  4. Réponses: 0
    Dernier message: 25/09/2008, 13h59
  5. problème d'injection (?) d'un session bean EJB3 dans une servlet
    Par toomsounet dans le forum Wildfly/JBoss
    Réponses: 2
    Dernier message: 11/03/2007, 01h26

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