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 :

Requête sur BDD et Persistance


Sujet :

Persistance des données Java

  1. #1
    Membre régulier Avatar de IMPRO
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Août 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Août 2007
    Messages : 111
    Points : 94
    Points
    94
    Par défaut Requête sur BDD et Persistance
    Bonjour,
    J'aimerai savoir est ce quand on exécute une requête directement sur une BDD (à partir du SGBD) les objets de persistance seront mise à jour automatiquement.

    par exemple :
    j'ai une une application JEE (en utilisant la persistance biensur) qui m'affiche la liste de mes clients. Et j'ajoute un client à partir du SGBD directement.
    la question est : comment faire pour qu'un simple rafraichissement suffira pour afficher le client ajouté à partir du SGBD.

    Merci à vous.

  2. #2
    Membre régulier
    Profil pro
    dev
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Points : 78
    Points
    78
    Par défaut
    Bonjour,

    J'aimerai savoir est ce quand on exécute une requête directement sur une BDD (à partir du SGBD) les objets de persistance seront mise à jour automatiquement.
    Automatiquement je pense pas que c'est possible.



    j'ai une une application JEE (en utilisant la persistance biensur) qui m'affiche la liste de mes clients. Et j'ajoute un client à partir du SGBD directement.
    la question est : comment faire pour qu'un simple rafraichissement suffira pour afficher le client ajouté à partir du SGBD.
    si le rafraichissement ré-exécute l'action qui récupère les infos en base, oui.

  3. #3
    Membre régulier Avatar de IMPRO
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Août 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Août 2007
    Messages : 111
    Points : 94
    Points
    94
    Par défaut
    Merci pour votre réponse.
    mais est ce que y aura pas de problème face une masse importante de données? et comment fonctionne le cache mémoire du serveur d'application(glassfish) ?
    Merci

  4. #4
    Membre régulier Avatar de IMPRO
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Août 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Août 2007
    Messages : 111
    Points : 94
    Points
    94
    Par défaut
    Je viens de remarquer une chose que j'ai pas pu comprendre le principe :
    mon application m'affiche tableau dont le contenu est suit :
    Code_role - libellé
    1 - role_1
    2 - role_2
    .
    .

    si j'ajoute par exemple une ligne (7,role_7) à partir du SGBD directement et je rafraichi la page, je trouve que mon tableau est mis à jour. Tout marche bien.
    Mais si je décide de supprimer la ligne ajoutée toujours à partir du SGBD et je ré insert la ligne de nouveau mais avec un libellé différent (7, nouveau_role) et je rafraichi la page, je trouve la ligne mais avec l'ancien libellé (7,role_7)

    Est ce que quelqu'un saura m’expliqué le fonctionnement ?

  5. #5
    Membre régulier Avatar de IMPRO
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Août 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Août 2007
    Messages : 111
    Points : 94
    Points
    94
    Par défaut
    J'ai trouvé la solution à mon problème et je vais poster la réponse au cas ou il y aura d'autres personnes qui vont rencontrer ce problème.
    En effet, c'était au niveau de la gestion du cache. Donc, pour avoir le résultat correct de la base de données il faut désactiver l'interrogation du cache, sa va minimiser les performances certes, mais certains besoins le nécessitent.

    Pour désactiver le cache en niveau ENTITY il suffit d'ajouter l'annotation :
    @Cacheable(value=false)
    Et c'est possible au niveau requête (à titre d'exemple):
    Query q =em.createNamedQuery("MyEntity.findAll");
    q.setHint("javax.persistence.cache.storeMode", CacheStoreMode.REFRESH);

  6. #6
    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
    Pour ce qui est de la modification "automatique" d'une entité, ça dépend de son état et du type de persistance utilisée.
    Avec JPA, si l'entité est "managed", toutes les modifications sur l'entité seront persistée automatiquement.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre régulier Avatar de IMPRO
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Août 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Août 2007
    Messages : 111
    Points : 94
    Points
    94
    Par défaut
    J'ai pas trop compris votre réponse. de quelle annotation vous parlez ?

  8. #8
    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
    ce n'est pas lié à une annotation, c'est le fonctionnement standard de JPA.

    Dans le principe (pour faire simple, je passe sur certaines spécificités comme JTA), ça se passe comme ceci :

    1- on demande une référence de l'EntityManager
    2- on l'utilise pour charger une entité (via find ou Query)
    (à ce niveau, l'entité est dite "managed")
    3- on modifie les propriétés de l'entité
    4- on ferme ou on commit l'EntityManager (close/flush)
    (il s'occupe de persister les objets "managed")
    5- la/les entité(s) précédemment chargée(s) passent à l'état "detached"

    On distingue 3 états :
    - transient (ce serait le cas quand tu fais un "new" sur une entité)
    - managed
    - detached

    En pratique, pour ce qui est des applications web, on ne conserve pas l'état de l'entité entre 2 requêtes http.
    On a une demande pour charger la page en vue des modifications, puis une nouvelle demande pour les sauvegarder.

    C'est plus clair ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre régulier Avatar de IMPRO
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Août 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Août 2007
    Messages : 111
    Points : 94
    Points
    94
    Par défaut
    Merci pour vos éclaircissements
    Je m'excuse pour le retard !

  10. #10
    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 IMPRO Voir le message
    Je m'excuse pour le retard !
    Pas de soucis
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. Requète sur BDD avec l'objet PDO
    Par zenico64 dans le forum Langage
    Réponses: 21
    Dernier message: 09/11/2010, 12h47
  2. Réponses: 1
    Dernier message: 20/10/2009, 22h55
  3. Requête SQL avec paramètre sur BDD Access
    Par BigMike dans le forum Windows Forms
    Réponses: 3
    Dernier message: 07/06/2007, 13h21
  4. Réponses: 6
    Dernier message: 11/04/2007, 17h54
  5. [VB6] Requêtes en BDD sur des dates
    Par pom dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 22/11/2005, 15h04

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