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 :

@PersistenceContext pour du multi base de données


Sujet :

Java EE

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 138
    Par défaut @PersistenceContext pour du multi base de données
    Bonjour,

    j'ai créer une application de traitement java multi-couche (REST-Manger-DAO-Entity) utilisant java EE 6 JPA/JTA Hibernate. Pas de Spring ni de JSF car le client est PHP.

    Cette application est utilisée par 50 domaines différents et il devient difficile à gérer.

    Sachant que l'appli est la même sur les 50 domaines et que chaque domaines possède ca propre BDD, existe-il un moyen d'avoir 50 domaines qui se connecte sur une seul et unique appli et en fonction du domaine qu'il l'appelle, l'appli sait qu'elle BDD aller appeler ?

    Car actuellement j'ai mon fichier persistence.xml comme suis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <persistence xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
      <persistence-unit name="Plugin-PU" transaction-type="JTA">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>
        <jta-data-source>jdbc/sportreserv</jta-data-source>
        </properties>
      </persistence-unit>
    </persistence>
    et dans ma couche DAO, je me connecte comme suis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    @PersistenceContext(unitName = "Plugin-PU")
        private EntityManager em;
    Je sais que mon persistence.xml peut gérer sans souci plusieurs persistence-unit. Mais je ne sais pas comment faire pour les appeler avec mon @PersistenceContext en fonction du domaine qui a appelé l'appli...

    Quelqu'un peut m'aider ?

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Tu trouveras ton bonheur ici

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 138
    Par défaut
    Merci de ton aide, mais je ne pense pas que ca soie encore la bonne solution.

    car il créer des persistences unit pour chaque classe et c'est trop fastidieux si je dois le faire à chaque nouveau client.

    Il n'y a t'il pas une solution pour le mettre dans une seule classe qui est appelée par toutes les classes DAO qui utilise l'EntityManager ?

    et il y a une solution pour appeler cette classe depuis mes services REST (car c'est la que je récupères le nom de domaine) et que mes DAO s'en souvienne quand ca vient leur tour de travailler ?

    Merci de ton début d'aide...

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Citation Envoyé par chatis Voir le message
    car il créer des persistences unit pour chaque classe et c'est trop fastidieux si je dois le faire à chaque nouveau client.
    Pas compris cette phrase. Il est un fait auquel tu ne pourras pas échapper, c'est le fait que tu dois avoir un seul contexte de persistence pour chaque base de donnée, que tu passes par JPA ou une connexion jdbc native. Alors dans le tutoriel il est très bien spécifié que tu peux avoir une seule classe gérant les accès aux bases, mais dans cette classe tu géres plusieurs contextes via des entityManagers. Je te vois bien faire un switch quelque part pour te positionner sur le bon em en fct de l'appli en cours. Une autre solution que celle là je doute bien fort.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 138
    Par défaut
    Ben justement cette phrase provient du faites que je n'ai pas compris comment faire cette classe qui gère mes PersistenceContext et comment récupérer le bon entityManager dans mon DAO.

    Je sais que je dois faire un em par BDD, Mais je ne vois absolument pas comment faire.. car dans ton tuto, il ne montre pas vraiment d'exemple pour gérer... et franchement je ne sais pas du tout comment faire une classe qui gère ca avec ses annotations... je suis perdu !!!

  6. #6
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Il faut pourtant juste suivre le tutoriel. Tu configures ton persistContext.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
      <persistence-unit name="myPersistenceUnit" transaction-type="JTA">
        <jta-data-source>myDB</jta-data-source>
        <exclude-unlisted-classes>false</exclude-unlisted-classes>
        <properties/>
      </persistence-unit>
      <persistence-unit name="secondPersistenceUnit" transaction-type="JTA">
        <jta-data-source>secondDB</jta-data-source>
        <exclude-unlisted-classes>false</exclude-unlisted-classes>
        <properties/>
      </persistence-unit>
    </persistence>
    Ta classe gérant tes connexions :
    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
    //import...
    @Stateless
    public class MySessionBean
    {
        @PersistenceContexts({
       @PersistenceContext(name="persistence/myPU1", unitName="myDB"),
       @PersistenceContext(name="persistence/myPU2", unitName="secondDB")
    })
     
        public void myFunction()
        {
                //...
                EntityManager em1 = (EntityManager) new InitialContext().lookup("java:comp/env/persistence/myPU1");
    EntityManager em2 = (EntityManager) new InitialContext().lookup("java:comp/env/persistence/myPU2");
                //...
        }
    }

Discussions similaires

  1. Quel outil utilisez vous pour concevoir vos bases de données
    Par Matthieu Brucher dans le forum Outils
    Réponses: 93
    Dernier message: 01/08/2014, 15h20
  2. Probleme pour créer un base de données...
    Par _matt_44 dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 03/06/2005, 14h36
  3. Réponses: 8
    Dernier message: 23/03/2005, 19h28
  4. Réponses: 4
    Dernier message: 29/11/2004, 22h53
  5. aide pour exporter une base de donnée
    Par matt55 dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 06/04/2004, 14h28

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