/ / Hibernate: Est-il possible d'ajouter manuellement des objets au cache de second niveau? - java, hibernation, mise en cache, jpa, cache de second niveau

Hibernate: Est-il possible d'ajouter manuellement des objets au cache de second niveau? - java, hibernation, mise en cache, jpa, cache de second niveau

Dans mon projet, je veux mettre en cache quelques objets mais pastable entière. Mon problème est donc: existe-t-il une API que je pourrais utiliser pour ajouter manuellement des objets pour mettre en cache le cache de deuxième niveau? (Ou existe-t-il un moyen de spécifier la région de données de table pour le cache de deuxième niveau?)

Réponses:

3 pour la réponse № 1

Vous pouvez annoter avec @Cacheable (vrai) les entités que vous souhaitez mettre en cache

@Cacheable(true)
@Entity
public class Person { ... }

puis dans votre fichier de configuration persistence.xml, vous devez définir le [shared-cache-mode][2] élément à utiliser ENABLE_SELECTIVE:

<shared-cache-mode>DISABLE_SELECTIVE</shared-cache-mode>

alors maintenant:

La mise en cache est activée pour toutes les entités car Cacheable (true) est spécifié. Toutes les autres entités ne sont pas mises en cache.

Pour spécifier des régions, vous pouvez utiliser le @Cache annotation:

@Cacheable(true)
@Cache(usage=CacheConcurrencyStrategy.READ_WRITE, region="your-entity-region")
@Entity
public class Person { ... }

Vous devez maintenant activer le cache de 2e niveau:

<prop key="hibernate.cache.use_second_level_cache">true</prop>
<property name="hibernate.cache.region.factory_class">
org.hibernate.cache.ehcache.EhCacheRegionFactory</property>

Pour ajouter des entités au cache de deuxième niveau, il vous suffit de charger l'entité (et elle sera mise en cache automatiquement):

Person person = entityManager.find(Person.class, 1L);