venerdì 22 ottobre 2010
domenica 10 ottobre 2010
Hibernate e la cache di secondo livello
Hibernate ha la possibilità di configurare una cluster cache. Questo sia per le singole classi che per le collection di dati (class-by-class basis or collection-by-collection basis). E' anche possibile configurare una cache clutered. E' evidente che questo meccanismo da alcuni vantaggi, ma anche alcuni svantaggi.
Vantaggi
Vantaggi
- Il database non sarà gravato da continue richieste, perchè molte di queste verranno già risolte a livello di cache.
- Il workload per rappresentare un dato tabulare come oggetto si riduce.
- La cache, che di solito è in memoria, è molto più veloce nel reperire i dati che non l'accesso al database.
- La cache può essere clusterizzata, aumentando la scalabilità ed affidabilità del sistema.
Svantaggi
- I dati, se possono essere variati anche da altre applicazioni, potrebbero non essere sempre aggiornati: è quindi necessario configurare adeguate policies di refresh dei dati.
Per questo tipo si caching, dette cache di secondo livello, Hibernate si affida a librerie esterne, che possono essere pluggate.
Per fare questo è sufficiente fare 2 operazioni.
- Nella configurazione di hibernate (hibernate.hbm.xml) basta settare la proprietà hibernate.cache.provider_class
- Per ogni classe di cui si vuole fare caching si deve aggiungere il tag
al file di mapping (o l'equivalente annotation sulla classe, ma io preferisco lavorare con i files di mapping) oppure, a livello di configurazione hibernate (hibernate.hbm.xml) specificare gli elementi e
Hibernate supporta alcuni cache providers, da una semplice Hashtable, creata per ragioni di test (e assolutamente da NON usare in produzione) a EHCache che supporta la replicazione e il clustering, a a JBossCache 2 che supporta anche la Query Cache.
Da mettere in evidenza che Hibernate, fino alla versione 3.0, veniva impacchettato con EHCache di default, e su questa Cache enterò più in dettaglio in futuro.
lunedì 4 ottobre 2010
Da Spring a JavaEE: una guida alla migrazione
Iscriviti a:
Post (Atom)