2011-08-26 13 views
15

Apparirà dalla ricerca di tutto il Web e del Web che non è possibile implementare EHCache come cache write-behind per Hibernate, poiché ciò richiederebbe modifiche sostanziali al codice di Hibernate.Write-Behind Cache per JPA

Esistono altre soluzioni (preferibilmente open source) per un provider JPA che può "trasparere" collegare un'implementazione cache write-behind e preferibilmente una che può essere distribuita con qualcosa come Terracotta?

Ho letto che EclipseLink e Oracle Coherence possono raggiungere questo obiettivo, ma Coherence purtroppo non è una soluzione economica!

+0

Il problema con EHCache e Hibernate si riferiva probabilmente all'utilizzo di Hibernate dal codice client e quindi rendere in modo trasparente il trasferimento in ibernazione a ehcache per primo, e il persistente effettivo veniva eseguito in modo asincrono come write-behind. Non vedo alcun problema con il codice client che scrive direttamente nella cache e usa Hibernate in modo indipendente per write-behind. – greyfairer

risposta

4

Abbiamo scritto un gestore cache write-behind per Coherence, basato su Hibernate.

Cosa ti impedisce di scrivere un CacheWriter EHCache utilizzando qualsiasi implementazione JPA, come descritto in http://ehcache.org/documentation/apis/write-through-caching. È possibile estendere AbstractCacheWriter e tutto ciò che è necessario implementare è scrivere (net.sf.ehcache.Element), writeAll (java.util.Collection), delete (net.sf.ehcache.CacheEntry) ed deleteAll (java.util .Collezione).

Basta assicurarsi che sia completamente indipendente dalla transazione circostante. Quindi l'applicazione scrive nella cache e non utilizza più JPA.

Quali sono i problemi che hai riscontrato?

+0

Grazie per aver condiviso le tue esperienze, questo suona sicuramente molto più facile di quanto mi aspettassi! Non ho provato a scrivere una cache write-behind, poiché nella mia domanda iniziale cercavamo soluzioni 'trasparenti' - quelle che richiedono una codifica minima, ma possono essere ottenute attraverso la configurazione e l'uso delle sole librerie. –

+0

Ho fatto qualcosa di molto simile: parti dell'applicazione usano EHCache, supportato da JPA (dietro un EJB3 SLSB). Molto semplice, a condizione che tu stia bene con un grafico ad oggetti completamente disconnesso. –

+0

@JoshuaDavis è necessario trovare un equilibrio tra la disconnessione degli oggetti del dominio e la denormalizzazione. Ho visto una presentazione interessante JAX Londra da Ben Stopford come hanno fatto id presso la Royal Bank of Scotland: http://www.benstopford.com/2011/01/27/beyond-the-data-grid-building-a- normalizzato-data-store-con-la coerenza/ – greyfairer