Domanda

Voglio usare la cache di secondo livello nel mio progetto di ibernazione, ma so solo un po 'di ibernazione nella cache di secondo livello, qualcuno può spiegare quanto dovrei usare questo nel mio codice e quale configurazione e file .jar ho bisogno? Ho impostato queste impostazioni sul mio file hibernate.cfg.xml

 <property name="hibernate.cache.use_query_cache">true</property>
    <property name="hibernate.cache.use_second_level_cache">true</property>
    <property name="hibernate.cache.provider_class">net.sf.ehcache.hibernate.EhCacheProvider</property>

e aggiungi questi file jar ehcache-1.6.1.jar, ehcache-1.6.1-javadoc.jar, ehcache-1.6.1-sources.jar Voglio sapere, devo cambiare qualsiasi altra configurazione?

e come posso capire che il mio progetto utilizza cache di secondo livello?

se metti solo questa impostazione, ibernazione usa automaticamente questo o devo usare un altro codice ant nella mia classe .java (come qualsiasi annotazione o qualcos'altro)

È stato utile?

Soluzione

L'annotazione che stai cercando è org.hibernate.annotations.Cache . L'utilizzo di base è:

@Entity
@Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
public MyEntity {
    ...

  @Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
  public List<ElementType> getSomeCollection() {
    ...
  }
}

Per le query, devi abilitare la cache delle query impostando la proprietà hibernate.cache.use_query_cache su true E specificare che la query è memorizzabile nella sua dichiarazione (per le query con nome) o chiamando setCacheable (true) su istanza della query.

Detto questo, devi stare molto attento con la memorizzazione nella cache e REALMENTE COMPRENDERE ciò che stai facendo, altrimenti farà più male che aiuto. Non guardarlo come " soluzione rapida " - la memorizzazione nella cache di tutto, ad esempio, è decisamente la cosa sbagliata da fare.

Altri suggerimenti

Le tue impostazioni renderanno le cache di query e di secondo livello disponibili per l'uso nel tuo progetto, ma devi comunque abilitarlo per entità, raccolte e query specifiche. Ciò richiede una pianificazione attenta perché ci sono compromessi che devi capire. In generale, le cache di secondo livello e di query sono appropriate per dati di sola lettura o prevalentemente di lettura, ma non di dati volatili. Se non lo possiedi già, ti consiglio di prendere una copia di Persistenza Java con ibernazione . Ha un ottimo trattamento della materia.

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