Ibernazione cache di secondo livello

Hibernate è una popolare soluzione open source di mapping relazionale a oggetti per Java. Allo scopo di aumentare le prestazioni, Hibernate fornisce anche la funzione di memorizzazione nella cache. Hibernate fornisce due tipi di memorizzazione nella cache, cache di primo livello e cache di secondo livello.

La cache di primo livello è integrata e utilizzata come predefinita, ma è limitata nell'uso, non accessibile ed è solo una cache in-process. La cache di secondo livello fornisce un'architettura collegabile, il che significa che una cache di terze parti può essere utilizzata come cache di secondo livello per Hibernate.

NCache fornisce il provider Hibernate Second Level Cache che può essere configurato senza alcuna modifica al codice. In questo modo accedi al ricco set di funzionalità di memorizzazione nella cache distribuita fornite da NCache.

NCache come provider di cache di secondo livello per l'ibernazione
Figura 1: NCache come provider di cache di secondo livello per l'ibernazione

Impostare NCache come cache di secondo livello per Hibernate

Impostare NCache poiché la cache di secondo livello per Hibernate è abbastanza semplice. Non sono richieste modifiche al codice effettivo. È necessario modificare solo i file di configurazione.

Ora per aggiungere NCache come cache di secondo livello per Hibernate, hibernate.cfg.xml deve essere modificato nel modo seguente:

  • 2nd La cache di livello deve essere abilitata impostando il hibernate.cache.use_second_level_cache proprietà come vera.
  • NCache deve essere configurato come provider di cache di secondo livello di Hibernate impostando il hibernate.cache.region.factory_class proprietà come JCacheRegionFactory per Hibernate 3.6 e versioni successive.

Ecco un esempio delle modifiche apportate al ibernare.cfg.xml file:

<hibernate-configuration>
  <session-factory>
    <property name="hibernate.cache.use_second_level_cache">true</property>
    <property name="hibernate.cache.region.factory_class">JCacheRegionFactory</property>
    ...
</session-factory>
</hibernate-configuration>

Configurazione delle regioni della cache

Hibernate fa uso di regioni della cache per riporre oggetti. NCache consente la configurazione di queste regioni della cache con proprietà diverse. Il NCacheIl file Hibernate.xml viene utilizzato per questo scopo. Questo file contiene tutte le impostazioni e le opzioni di configurazione per le regioni e le relative configurazioni utilizzate da NCache.

Di seguito è riportato un esempio NCacheFile di configurazione Hibernate.xml in cui sono configurate le regioni:

<configuration>
<application-config application-id="myapp" enable-cache-exception="true" default-region-name="DefaultRegion" key-case-sensitivity="false">
    <cache-regions>
        <region name="hibernator.BLL.Customer:Customer" cache-name="myPartitionedcache" priority="BelowNormal" expiration-type="Absolute" expiration-period="8"/>
        <region name="DefaultRegion" cache-name="myPartitionedcache" priority="default" expiration-type="none" expiration-period="0" />
    </cache-regions>
	...
</application-config>
</configuration>

Configurazione della sincronizzazione del database

NCache è una cache distribuita versatile, efficiente ed efficace per .NET Framework, .NET Coree Java. Viene fornito con un'ampia serie di caratteristiche e funzionalità. Una di queste funzionalità è la sincronizzazione del database tramite Dipendenza SQL. È qui che la cache controlla il database per eventuali modifiche e ricarica o rimuove gli elementi che risultano obsoleti o ridondanti.

Hai la possibilità di configurare NCache come provider di cache di secondo livello per Hibernate per utilizzare la funzionalità di sincronizzazione del database. Dovrai applicare le seguenti modifiche al NCacheHibernate.xml file:

<configuration>
<application-config application-id="myapp" enable-cache-exception="true" default-region-name="DefaultRegion" key-case-sensitivity="false">
  	... 
    <database-dependencies>
        <dependency entity-name="hibernator.BLL.Customer" type="oracle" sql-statement="select ContactName from Customer where CustomerID ='?'" cache-key-format="hibernator.BLL.Customer#[pk]" connection-string="Your Connection String"/>
    </database-dependencies>
</application-config>
</configuration>

Ibernazione della configurazione della cache delle query

Ibernazione fornisce una funzionalità di memorizzazione nella cache delle query. Qui i risultati delle query vengono memorizzati nella cache di secondo livello. NCache consente di memorizzare nella cache tali query utilizzando questa funzione. Questa funzione può essere abilitata modificando il file ibernare.cfg.xml file nel modo seguente:

<hibernate-configuration>
  <session-factory>
  ...
  <property name="hibernate.cache.use_query_cache">true</property>
  </session-factory>
</hibernate-configuration>

L'abilitazione della cache delle query non memorizza nella cache ogni query per impostazione predefinita. Invece le query che devono essere memorizzate nella cache devono essere impostate come memorizzabili nella cache nel codice. Per impostare una query memorizzabile nella cache, chiamare la funzione setCacheable(true) della query durante la creazione della query. Il codice seguente è un esempio che mostra una query memorizzabile nella cache:

List customerEnumerator = session.createQuery("from Customer c").setCacheable(true).list(); 

I vantaggi dell'utilizzo di NCache come cache di secondo livello per Hibernate

I seguenti sono i motivi principali per cui NCache è un'opzione adatta da utilizzare come cache di secondo livello per Hibernate quando l'applicazione è in esecuzione in un ambiente multi-server.

  • Scalabilità lineare: La tua applicazione può essere scalato linearmente con NCache attraverso l'aggiunta di più server cache. In questo modo non solo aumenterai la tua capacità di archiviazione, ma aumenterai anche la velocità delle transazioni.
  • Cache flessibile: NCache è una cache molto flessibile, il che significa che fornisce ai suoi utenti un ricco set di topologie di memorizzazione nella cache ad esempio, Topologia speculare, Topologia replicata, Topologia della partizione e Topologia della partizione della replica. Ogni topologia soddisfa uno scenario e un'esigenza specifici, rendendola così flessibile.
  • Sincronizzazione database: Hai la possibilità di sincronizza la tua cache con il database come SQL Server, Oracle, ecc. In questo modo la cache controlla il database per eventuali modifiche e rimuove o mantiene gli elementi nella cache in base a tale modifica. Ciò garantisce che la tua cache contenga elementi sempre aggiornati.
  • Operazioni asincrone: Operazioni asincrone sono disponibili in NCache. Queste operazioni ti permettono di lavorare sulla tua applicazione senza aspettare che la cache venga aggiornata, rendendo tutto così veloce. Queste operazioni possono essere abilitate con Hibernate.

Cosa fare dopo?

© Copyright Alachisoft 2002 - . Tutti i diritti riservati. NCache è un marchio registrato di Diyatech Corp.