Question

Je souhaite utiliser le cache de second niveau dans mon projet hibernation, mais je connais un peu le cache d'hibernation de deuxième niveau. Quelqu'un peut-il expliquer comment je l'utilise dans mon code, ainsi que la configuration et le fichier .jar nécessaires? Je mets ces paramètres dans mon fichier hibernate.cfg.xml

 <property name="hibernate.cache.use_query_cache">true</property>
    <property name="hibernate.cache.use_second_level_cache">true</property>
    <property name="hibernate.cache.provider_class">net.sf.ehcache.hibernate.EhCacheProvider</property>

et ajoutez ces fichiers jar ehcache-1.6.1.jar, ehcache-1.6.1-javadoc.jar, ehcache-1.6.1-sources.jar Je veux savoir si je change d’autres configurations?

et comment puis-je comprendre que mon projet utilise le cache de second niveau?

si vous venez de mettre ce paramètre, hibernate l'utilise automatiquement ou je dois utiliser un autre code de ma classe .java (comme toute annotation ou autre chose)

Était-ce utile?

La solution

L’annotation que vous recherchez est org.hibernate.annotations.Cache . L'utilisation de base est:

@Entity
@Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public MyEntity {
    ...

  @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
  public List<ElementType> getSomeCollection() {
    ...
  }
}

Pour les requêtes, vous devez Activez le cache de requêtes en définissant la propriété hibernate.cache.use_query_cache sur true ET spécifiez que la requête peut être mise en cache dans sa déclaration (pour les requêtes nommées) ou en appelant setCacheable (true) sur l'instance de requête.

Cela étant dit, vous devez faire très attention à la mise en cache et à COMPRENDRE VRAIMENT ce que vous faites, sinon cela ferait plus de tort que de l'aide. Ne le considérez pas comme un "correctif rapide". - Tout mettre en cache, par exemple, est définitivement la mauvaise chose à faire.

Autres conseils

Vos paramètres rendront les caches de deuxième niveau et de requête disponibles dans votre projet, mais vous devez toujours l'activer pour des entités, des collections et des requêtes spécifiques. Cela nécessite une planification minutieuse, car vous devrez comprendre certains compromis. En général, les caches de second niveau et de requête conviennent aux données en lecture seule ou en lecture seule, mais pas aux données volatiles. Si vous ne le possédez pas déjà, je vous conseillerais de vous procurer une copie de Java Persistence avec Hibernate . . Il traite très bien le sujet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top