Come è possibile disattivare la cache di secondo livello di alcuni determinati entità Hibernate senza cambiare le annotazioni

StackOverflow https://stackoverflow.com/questions/934133

Domanda

sto usando cache di secondo livello di Hibernate nella mia richiesta, per qualsiasi ragione affari Non riesco a cambiare l'annotazione entità più .

Nel mio progetto, a parte cambiare il database da Hibernate, esistono anche altre SQL nativo che non passano attraverso Hibernate. Pertanto, i dati della cache Hibernate di secondo livello potrebbero essere stantio dopo di database in fase di aggiornamento da SQL nativo. Ecco perché voglio che per disabilitare la cache di secondo livello per alcune entità (modo di programmazione o altro che cambiare annotazione).

Grazie in anticipo!

È stato utile?

Soluzione

ATTENZIONE: Come osservato Jens Schauder, è impossibile configurare EHCache per memorizzare 0 elementi in memoria impostando maxElementsInMemory = "0" in quanto causa efficace effetto opposto - imposta dimensioni illimitate per la cache. Questo comportamento non è menzionato sul rel="nofollow pagina Hibernate Caching ma è documentato su pagina di configurazione della cache .

ho subito rivisto la documentazione e non ho ancora trovato approccio alternativo. Non sono in grado di eliminare questa risposta da sola. : - (

Il mio suggerimento originale:

È possibile configurare il provider implementazione di cache di secondo livello per brevi tempi di TTL e / o per memorizzare 0 risultati di particolare tipo di entità.

es. se si utilizza l'EHCache, è possibile configurarlo in ehcache.xml: *

<cache
name="com.problematic.cache.EntityName"
maxElementsInMemory="0" <<== this should effectively disable caching for EntityName
overflowToDisk="false" <<== Do not overflow any entries to disk
/>

Hibernate Caching nella documentazione EHCache.

Altri suggerimenti

In Terracotta 3.1 e superiore, è possibile abilitare / disabilitare la sospensione di 2 ° livello cache su una base per regione, sia nella configurazione (staticamente) e in fase di esecuzione, utilizzando la terracotta Console per gli sviluppatori.

È inoltre possibile monitorare in tempo reale le statistiche circa la cache e Hibernate, per i singoli nodi di un cluster o di tutto il cluster.

Terracotta è open source. Per ulteriori dettagli, visitate di terracotta a Hibernate .

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top