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

Persistance des données Java Discussion :

Synchronisation des informations de la base de données avec les objets java


Sujet :

Persistance des données Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 31
    Points : 19
    Points
    19
    Par défaut Synchronisation des informations de la base de données avec les objets java
    Salut!
    Je suis entrain de développer deux applications web JEE, qui communiquent entre elles via un web service Restfull. En ce qui concerne la persistance j'utilise l'ORM JPA que j'implémente avec eclipse-Link.
    Mon architecture est la suivante : La première application communique directement avec la base de données, la deuxième communique avec la base de données en passant par le web service mis en place.
    Lorsque la première application insère les données dans la base de données, les informations sont automatiquement remontées sur la deuxième application.
    Mais lorsque la deuxièmement application fait une insertion à la base de données, l'insertion est réussie mais la première application ne remonte pas ces informations automatiquement tandis que les données insérées sont bien dans la base. Les informations remontent lorsque je redéploie la première application sur mon serveur.
    Je me demande s'il existe une méthode qui permet de synchroniser automatiquement les informations insérées dans ma base de données avec mes objets.

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    il faudrait que tu nous décrive un peu mieux ton archiutecture. Pour ce que je comprend de ta description, c'est l'application 1 qui fait les insertions / récupération et expose un web service à l'application 2. Donc c'est à ton code de l'application 1 d'éviter de garder en mémoire des trucs qui ne sont plus valide. Il le sait très bien que ce n'est plus valide puisque c'est lui qui a modifié les données.
    Maintenant il faudrait que tu nous décrive comment ton application 1 garde ses données en mémoire car JPA normalement va rechercher les objets sur la DB à chaque appel.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    il faudrait que tu nous décrive un peu mieux ton archiutecture.
    Voici mon architecture:
    L'application 1 est faite avec le framework JEE Vraptor 4,La deuxième application est faite en JSF 2.2 et mon web service Restfull est fait avec Jersey.
    Le problème se pose lors de la récupération des données provenant de la base par l'application 1 après insertion par l'application 2.Je constate comme si la JPA n'actualise pas mes objets automatiquement. Elle actualise mes objets lorsque je redéploie mon application sur mon serveur glassfish.
    En résume lorsque l'application 2 fait une insertion,les données sont bien logées dans la BD,mais ne sont pas remontées automatiquement à l'application 1,sauf si je redéploie cette dernier sur mon serveur.

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

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    L'application 2 accède directement à la DB ou passe par le service de l'application 1?

    Comment tu gère ton cache (si tu en as un)?
    Comment tu récupère tes données?

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par tchize_ Voir le message
    L'application 2 accède directement à la DB ou passe par le service de l'application 1?

    Comment tu gère ton cache (si tu en as un)?
    Comment tu récupère tes données?
    L'application 2 passe par le web service pour insérer dans la BD,c'est l'application 1 qui a un accès direct à la BD,et elle quand elle insère, les données sont automatiquement affichées sur l'application 2.
    Je n'ai pas de cache.
    voici la méthode qui exécute ma requête de récupération des données au niveau de l'application 1,c'est une requête nommée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        public List<Ristourne> findByFlag(Integer flag) {
            List<Ristourne> ristourne = null;
            try {
                ristourne = em.createNamedQuery("Ristourne.findByFlag", Ristourne.class)
                        .setParameter("flag", flag)
                        .getResultList();
            } catch (NoResultException e) {
     
            }
            return ristourne;
        }
    Le code de ma requête nommée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @NamedQuery(name = "Ristourne.findByFlag", query = "SELECT u FROM Ristourne u WHERE u.flag=:flag")
    Le code au niveau de mon service web qui permet de mettre à jour la BD
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
                     positionnement.setCarte(carte);
                        positionnement.setRistourne(ristourne);
                        em.persist(positionnement);
                        //Le nombre d'inscrit augmente de  1
                        int nombreInscrit=ristourne.getInscrit()+1;
                        ristourne.setInscrit(nombreInscrit);
                        //On ferme la ristourne si le quota est atteint
                        if (ristourne.getInscrit() == ristourne.getNombreDePersonne()) {
                            ristourne.setFlag(2);
                        }
                        em.merge(ristourne);

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2015
    Messages : 31
    Points : 19
    Points
    19
    Par défaut
    J'ai pu trouvé la solution à mon problème,il suffisait juste que j'utilise la méthode refresh de la classe EntityManager après ma requête de sélection pour rafraîchir mon graphe d'objets.

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 10/03/2009, 15h25
  2. Réponses: 2
    Dernier message: 05/07/2007, 18h19
  3. ajouter des informations dans la base de données
    Par gentil dans le forum Hibernate
    Réponses: 7
    Dernier message: 12/04/2007, 11h15
  4. Jtree avec des informations d'une base de données
    Par Lebas dans le forum Composants
    Réponses: 4
    Dernier message: 23/01/2007, 16h27
  5. Réponses: 5
    Dernier message: 01/12/2006, 10h00

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