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 :

Cacher les classes filles avec Ehcache


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 2
    Par défaut Cacher les classes filles avec Ehcache
    Bonjour,

    Est-ce que Ehcache supporte le cache des classes filles ? Je vous donne un exemple : si, par exemple, on a une classe mère Animal et une classe fille Chat. On utilise joined-subclass comme type d’héritage Hibernate. Est-ce qu’il y’a une possibilité de cacher seulement la classe fille « Chat » sans cacher Animal.

    Je suis en stage de fin d’étude et je suis bloqué.

    Merci

  2. #2
    Membre chevronné
    Avatar de provirus
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Février 2009
    Messages
    248
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2009
    Messages : 248
    Par défaut
    Bonjour,

    C'est un peu dur à suivre car ehcache va cacher des objets (des instances de classes) ; pas des classes.
    Alors si tu reçois un Chat de ta base de données, son type est Chat et c'est ce Chat qui est caché. En d'autres mots, peu importe sa classe mère, c'est l'objet final qui est cachée.

    J'espère que ça t'aide...

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2016
    Messages : 2
    Par défaut
    merci provirus pour ta réponse,

    par exemple j'ai cette hiérarchie de classes :

    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
        <class name="Person" table="PERSON">
            <cache usage="read-only"/> 
            <id name="personId" column="PERSONID">
                <generator class="native"/>
            </id>
            <property name="firstname"/>
            <property name="lastname" column="lastname"/>
     
            <joined-subclass name="Employee"  table="EMPLOYEE"  lazy="true">
     
                    <key column="personid"/>
                    <property name="departmentName" column="department_name"/>
                     <property name="joiningDate" type="date" column="joining_date"/>
            </joined-subclass>
     
        </class>
    La balise <cache usage="read-only"/> doit obligatoirement être dans la classe mère, dans mon cas la classe Person.

    Mon code test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for(int i=1;i<=2;i++){
            Session session = HibernateUtil.getSessionFactory().openSession();
            Person person= (Person) session.get(Person.class, new Long(1));
            System.out.println(person.getFirstname() + " "+ person.getLastname()+" "+person.getPersonId());
            session.close();
    }
    Hibernate fait une seule requête et les autre appels sont faits depuis le cache. A noter que je utilise le type d'héritage <joined-subclass> lors de la génération. Avec ce type d’héritage hibernate génère un left outher join pour la classe employée. Et je pense que ça explique le problème. Le cache intervient automatiquement car la classe cachée (EMPLOYE) est appelée

    Mes questions :
    1. Est de qu'il y a une possibilité d'utiliser un discriminateur pour dire à hibernate de me charger seulement la classe Person sans faire un left outher join (je pense que impossible de le faire) ?
    2. Est ce qu'il y a d'autres technologies de cache qui peuvent me donner la possibilité d'avoir une cache d'une classe fille avec le méme type d'héritage que j'utilise


    Merci de me donner votre avis à cette explication.

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/05/2011, 13h15
  2. Cacher les classes Java
    Par ilyan dans le forum NetBeans
    Réponses: 2
    Dernier message: 22/12/2010, 11h05
  3. Lister toutes les classes filles
    Par Loceka dans le forum Général Java
    Réponses: 3
    Dernier message: 01/04/2010, 11h46
  4. [PHP 5.2] [POO] Propriétés statiques non partagées par les classes filles
    Par gege2061 dans le forum Langage
    Réponses: 5
    Dernier message: 08/09/2009, 15h25
  5. Connaître les classes filles
    Par Djakisback dans le forum Langage
    Réponses: 8
    Dernier message: 10/02/2008, 13h19

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