/ / Hibernácia: Je možné ručne pridať objekty do vyrovnávacej pamäte druhej úrovne? - java, hibernácia, ukladanie do vyrovnávacej pamäte, jpa, vyrovnávacia pamäť druhej úrovne

Hibernácia: Je možné manuálne pridať objekty do vyrovnávacej pamäte druhej úrovne? - java, hibernácia, ukladanie do vyrovnávacej pamäte, jpa, vyrovnávacia pamäť druhej úrovne

V mojom projekte chcem ukladať niekoľko objektov do vyrovnávacej pamäte, ale niecelý stôl. Takže môj problém je, existuje API, ktoré by som mohol použiť na manuálne pridávanie objektov na dlhodobé spánok do vyrovnávacej pamäte? (Alebo existuje spôsob, ako určiť oblasť údajov tabuľky pre vyrovnávaciu pamäť druhej úrovne?)

odpovede:

3 pre odpoveď č. 1

Môžete anotovať pomocou @Cacheable (true) entity, ktoré chcete ukladať do vyrovnávacej pamäte

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

a potom v konfiguračnom súbore persistence.xml musíte nastaviť [shared-cache-mode][2] prvok na použitie ENABLE_SELECTIVE:

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

tak teraz:

Vyrovnávacia pamäť je povolená pre všetky entity, pre ktoré je zadaná vyrovnávacia pamäť (true). Všetky ostatné entity sa neukladajú do vyrovnávacej pamäte.

Na určenie regiónov môžete použiť špecifický režim dlhodobého spánku @Cache Anotácia:

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

Teraz musíte povoliť vyrovnávaciu pamäť 2. úrovne:

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

Ak chcete do medzipamäte 2. úrovne pridať entity, stačí len načítať entitu (a automaticky sa uloží do vyrovnávacej pamäte):

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