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

Hibernate Java Discussion :

[Cache et perf]


Sujet :

Hibernate Java

  1. #21
    Membre émérite Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Par défaut
    Ah, au temps pour moi, tu fais donc bien plusieurs requetes lors du même programme ... je pensais que tu t'étonnais que LA requete que tu lancais (dans un main par exemple) te prenait 5sec ... chose qui aurait été expliquée.

    Pour la cache second niveau, il est applicatif. Tu le desactive comme tu l'as cité. Pour info, si ce dernier est desactivé, le cache de requete l'est aussi par défaut il me semble.

    Dernier point, il existe également le cache de session (dit de 1er niveau) qui lui n'est pas désactivable mais seulement nettoyable avec la méthode clear() appartenant à l'objet session. Peut etre est ce dernier qui vient perturber tes résultats.

    Sinon en regardant ton code, peut on savoir ce que sont les 6 requetes qui suivent celle de ton vendeur ?!? Charges tu des listes ou tout autre informations ?!?

  2. #22
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 102
    Par défaut
    bah les 6 autres requètes (j'en parles précédement), c'est ma jointure d'une relation OneToOne!! et effectivement ça ne me plait pas du tout non plus!! mais j'ai pas reussi à trouver le bon paramètre!!
    apparement fetch mais ça n'a pas marché!?



    session.clear()???
    mais de tout les exemples que j'ai vu, ils n'utilisent pas ça?? j'essaye!!

  3. #23
    Membre émérite Avatar de BizuR
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    688
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 688
    Par défaut
    Citation Envoyé par bslota
    session.clear()???
    mais de tout les exemples que j'ai vu, ils n'utilisent pas ça?? j'essaye!!
    Bah cela dit ... "normalement" le cache n'est que béénfique pour l'appli alors on en parle moins mais la doc hibernate mentionne bien l'option clear() en question

    Pour les One to one, en effet, je n'avais cependant pas fait la liaison entre les deux éléments

  4. #24
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 102
    Par défaut
    clear() change rien!!

    je tourne en rond!!

  5. #25
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 102
    Par défaut
    truc de ouf malade!!

    J'ai fait la methode hibernate d'ajout dans la base et là, ça marche!!

    Donc si j'ajoute un champ, modifie supprime un champ depuis phpmyadmin (par ex), les changements n'apparaissent pas (etant donné que c'est un table innodb, j'ai fait un commit au cas où!?)

    Par contre, si je fais cela (j'ai au moins testé l'ajout) depuis mon appli via hibernate, les changement apapraissent!!!

    Il doit y avoir quand même une histoire de cache la dedans!! c'est pas possible!!

  6. #26
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 102
    Par défaut
    encore plus ouf!!

    j'allume mon prog une première fois!!
    j'affiche la liste dans le premier, j'ajoute via phpmyadmin un enregistrement E1
    je reaffiche la liste. le nouvel enregistrement E1 n'apparait pas

    j'allume mon prog une deuxieme fois!! (autre instance)
    j'affiche la liste et on y vois E1

    j'ajoute via mon prog1 un enregistrement E2
    j'affiche la liste dans prog1, je vois desormais E1 et E2

    j'affiche la liste dans prog2, je vois toujours E1 mais pas E2

    C'est donc la methode session.save() qui reactualise qqchose!??

    Le seul truc qui change, c'est que je n'utilise pas de transaction dans la requete de chargement de la liste!!!

  7. #27
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 102
    Par défaut
    C'etait la transaction!!!

    bref au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Session session = HibernateUtils.getSession();   
    List<Salesman> salesmen = session.createQuery("from Salesman").list();
    session.close();
    return salesmen;
    il fallait mettre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Session session = HibernateUtils.getSession();
    Transaction tx = session.beginTransaction();
    List<Salesman> salesmen = session.createQuery("from Salesman").list(); 
    tx.commit();
    session.close();
    return salesmen;
    POURQUOI!!???

  8. #28
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Par défaut
    Tout code d'accès à une base de données doit se faire
    au sein d'une transaction:
    que ce soit un accès en lecture ou écriture.

    Si ce n'est pas le cas, cela peut engendrer des incohérences au niveau des données.

  9. #29
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 102
    Par défaut
    Evidemment !!
    Quand je me lance dans l'apprentissage d'un nouvel outil, j'ai pour habitude de mettre mes fondamentaux de coté!! je préfère me crisper sur les paramètrages!!


    Cependant je me demande ce qui ce se passe sur une base MyIsam qui ne gère pas les transactions??

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Répertoire caché
    Par KUBITUS dans le forum Delphi
    Réponses: 30
    Dernier message: 13/04/2007, 07h19
  2. Ouvrir (fopen) un fichier caché
    Par shef dans le forum C
    Réponses: 2
    Dernier message: 09/09/2002, 09h06
  3. ListView->Items->Clear() !!! Qques probl de perf
    Par Nicolas_a69 dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/08/2002, 11h49
  4. Webbrowser : Comment ne pas prendre la page en cache
    Par cedm78 dans le forum Web & réseau
    Réponses: 3
    Dernier message: 30/08/2002, 11h17

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