Exemple: Utilisation du plug-in Hibernate pour précharger les données dans le cache ObjectGrid

Vous pouvez utiliser la méthode preload de la classeObjectGridHibernateCacheProvider pour précharger les données dans le cache d'ObjectGrid pour une classe d'entité.

Exemple : utilisation de la classe EntityManagerFactory

EntityManagerFactory emf = Persistence.createEntityManagerFactory("testPU");
ObjectGridHibernateCacheProvider.preload("objectGridName", emf, TargetEntity.class, 100, 100);
Important : Par défaut, les entités ne font pas partie de la mémoire cache de second niveau. Dans les classes d'entité qui nécessitent la mise en cache, ajoutez l'annotation @cache. Exemple de programme :
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
@Entity
@Cache(usage=CacheConcurrencyStrategy.TRANSACTIONAL)
public class HibernateCacheTest { ... }
Vous pouvez remplacer cette valeur par défaut en définissant l'élément shared-cache-mode dans le fichier persistence.xml ou en utilisant la propriété javax.persistence.sharedCache.mode.

Exemple : utilisation de la classe SessionFactory

org.hibernate.cfg.Configuration cfg = new Configuration();
// utilisez la méthode de configuration addResource, addClass et setProperty pour préparer 
// la configuration requise pour créer SessionFactor
SessionFactory sessionFactory= cfg.buildSessionFactory();
ObjectGridHibernateCacheProvider.preload("objectGridName", sessionFactory, 
TargetEntity.class, 100, 100);
Remarque :
  1. Dans un système réparti, ce mécanisme de préchargement peut uniquement être appelé à partir d'une machine virtuelle Java. Le mécanisme de préchargement ne peut pas être exécuté à partir de plusieurs machines virtuelles Java.
  2. Avant d'exécuter le préchargement, vous devez initialiser le cache eXtreme Scale en créant EntityManager en utilisant EntityManagerFactory pour créer tous les BackingMaps correspondants. Autrement, le préchargement force l'initialisation du cache avec une mappage de sauvegarde par défaut pour prendre en charge toutes les entités. Une seule mappe de sauvegarde est ainsi partagée par toutes les entités.