/ / Hibernate: É possível adicionar objetos manualmente ao cache de segundo nível? - java, hibernação, cache, jpa, cache de segundo nível

Hibernate: É possível adicionar manualmente objetos ao cache de segundo nível? - java, hibernate, caching, jpa, cache de segundo nível

No meu projeto, quero armazenar em cache alguns objetos, mas nãomesa inteira. Portanto, meu problema é que existe uma API que eu poderia usar para adicionar objetos manualmente ao hibernar o cache de segundo nível? (Ou existe uma maneira de especificar a região de dados da tabela para o cache de segundo nível?)

Respostas:

3 para resposta № 1

Você pode anotar com @Cacheable (verdadeiro) as entidades que você deseja armazenar em cache

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

e, em seguida, no seu arquivo de configuração persistence.xml, é necessário definir o [shared-cache-mode][2] elemento a ser usado ENABLE_SELECTIVE:

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

então agora:

O armazenamento em cache está ativado para todas as entidades, pois Cacheable (true) está especificado. Todas as outras entidades não são armazenadas em cache.

Para especificar regiões, você pode usar o Hibernate específico @Cache anotação:

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

Agora você precisa habilitar o cache de segundo nível:

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

Para adicionar entidades ao cache de 2º nível, basta carregar a entidade (e ela será armazenada em cache automaticamente):

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