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 :

Le cache de JPA


Sujet :

JPA Java

  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 139
    Par défaut Le cache de JPA
    Bonjour,

    Je développe une application cliente avec JPA ( en attendant de passer par Glassfish et son conteneur EJB pour l'accès aux données). Je dois donc traiter les entitymanagers à la main sans utiliser l'IoC.
    Je n'utilise pour l'instant qu'un seul EM (EntityManager) pour toute l'application. Mais je pense que le cache va exploser au bout d'un moment.

    J'ai quelques questions:

    1 - Est-ce que l'EM arrête de manager les objets quand ils ne sont plus référencés dans le programme (exemple: objet = null)?
    2 - Serait-ce peut être utile de créer une table de hachage <Serializable,EntityManager> afin d'avoir un EM par objet (pas tous non plus) et quand on n'a plus besoin de cet objet, récupérer l'EM correspondant pour le fermer?
    3 - Peut-on faire de l'injection d'EM dans une appli cliente?

    Merci

  2. #2
    Membre Expert
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Par défaut
    Mais je pense que le cache va exploser au bout d'un moment.
    Qu'est ce qui te fait penser ça ???
    Peut-on faire de l'injection d'EM dans une appli cliente?
    Oui. Par contre, tu ne peux pas le faire directement avec PersistenceContext sans utiliser un framework IoC tel que Spring.
    Est-ce que l'EM arrête de manager les objets quand ils ne sont plus référencés dans le programme (exemple: objet = null)?
    Non, il faut les détacher du contexte (JPA 2.0 ou Hibernate). Avec JPA 1, tu ne peux pas détacher une entité à la fois (une technique consiste en la copie des entités pour les considérer comme détachées quand on veut - on utilise alors la copie-).

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 139
    Par défaut
    Mais je pense que le cache va exploser au bout d'un moment.
    Qu'est ce qui te fait penser ça ???
    En fait je vais expliquer tout le truc:
    C'est une appli type Desktop (JDesktopPane, JInternalFrame, etc.). Pour faire simple:
    1- Je sélectionne un site sur un menu (l'objet de classe Site est managé).
    2- Un nouveau menu remplace l'ancien donnant accès à de nouveaux objets qui sont eux aussi managés du fait de leur relation avec le site sélectionné (Poste, Agents, etc.).
    3- J'accède à certains de ces objets, puis à d'autres liés à eux. Je me retrouve avec une grande quantité d'objets managés.
    4- Je quite le site sélectionné pour en sélectionner un autres. Plus aucune instances des précédents objets est référencée mais ils restent donc managés. C'est de la que vient mon idée d'overflow du cache.

    Alors on peut dire qu'à chaque fois que quitte un site je clear l'EM mais je peux en sélectionner plusieurs. Il faut donc que je clear et que je re-merge tous les autres sites ainsi que leurs objets associés. L'appli devient alors rapidement une vraie usine à gaz.

  4. #4
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 139
    Par défaut
    Je vois que je t'ai laissé coi! lol

  5. #5
    Membre Expert
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Par défaut
    À mon avis, il faut voir du côté du paramétrage du cache. Et ça dépend de l'implémentation (Hibernate permet d'utiliser plusieurs caches différents, EclipseLink a une implémentation interne tout comme OpenJPA et TopLink).

  6. #6
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 139
    Par défaut
    Bon j'ai des problème de heap memory space à cause d'un dépassement des 85Mo alloués pour l'application. Je pense que c'est du au fait que je ne fait/peut pas de clear() sur l'entity manager...

  7. #7
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    139
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 139
    Par défaut
    Je fait un petit up pour voir si vous avez des idées sur la façon dont je pourrais paramétrer le cache de JPA. En fait je voudrais rendre détachés les objets qui ne sont plus référencés dans mon application. Ou mieux encore, avoir une fonction permettant de détacher un seul objet et non tous...
    Merci

Discussions similaires

  1. JPA / Hibernate et cache
    Par florianj dans le forum JPA
    Réponses: 1
    Dernier message: 03/01/2014, 09h50
  2. JPA + Hibernate + ehCache : Mise en cache redondant ?!..
    Par zanteskuken dans le forum Hibernate
    Réponses: 0
    Dernier message: 10/01/2012, 21h31
  3. [Data] Spring hibernate JPA : second level cache
    Par nahtanojb dans le forum Spring
    Réponses: 0
    Dernier message: 11/04/2010, 19h32
  4. JPA EclipseLink share cache
    Par tuxor dans le forum JPA
    Réponses: 0
    Dernier message: 29/10/2009, 07h06
  5. Répertoire caché
    Par KUBITUS dans le forum Delphi
    Réponses: 30
    Dernier message: 13/04/2007, 08h19

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