12.8.2. Mise en cache de second niveau d'objets de référence pour les données non mutables

Hibernate met en cache automatiquement les données dans la mémoire pour des performances améliorées. Ceci est accompli par un cache en mémoire, ce qui réduit le nombre de fois où les recherches de base de données sont nécessaires, surtout pour les données qui changent rarement.
Hibernate administre deux types de caches. Le cache principal (également appelé le cache de premier niveau) est obligatoire. Ce cache est associé à la session en cours et toutes les demandes doivent passer à travers. Le cache secondaire (également appelé le cache de second niveau) est facultatif et est consulté seulement après consultation préalable du cache primaire.
Les données sont stockées dans le cache de second niveau en commençant par un désassemblement dans un tableau d'états. Ce tableau est copié complètement, et cette copie complète est mise en cache. L'inverse est fait pour la lecture du cache. Cela fonctionne bien pour les données qui ne changent pas (données mutables), mais est inefficace pour des données immuables.
La copie complète des données est une opération coûteuse en termes de vitesse de traitement et d'utilisation de la mémoire. Pour les grands ensembles de données, la vitesse de traitement et la mémoire deviennent un facteur de limitation de la performance. Hibernate vous permet de spécifier le référencement des données immuables au lieu de les copier. Au lieu de copier des ensembles de données complets, Hibernate peut maintenant stocker la référence aux données dans le cache.
Cela peut être effectué en modifiant la valeur du paramètre de configuration de hibernate.cache.use_reference_entries à true. Par défaut, hibernate.cache.use_reference_entries est défini à false.
Lorsque hibernate.cache.use_reference_entries a pour valeur true, un objet de données immuables qui n'a pas d'associations n'est pas copié dans le cache de second niveau, et seulement sa référence y sera stockée.

Avertissement

Lorsque hibernate.cache.use_reference_entries a pour valeur true, un objet de données immuables qui possède des associations sera copié dans le cache de second niveau.