Hibernate è una libreria di mapping relazionale a oggetti per il linguaggio Java. Fornisce la mappatura dalle classi Java alla tabella del database e riduce il ciclo di sviluppo complessivo. A causa dei vantaggi offerti da Hibernate, vengono sviluppate applicazioni transazionali sempre più elevate utilizzando Hibernate. Ecco un esempio di Hibernate in un'applicazione Java.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import org.hibernate.*; public class HibernateSample { ... Session session = factory.openSession(); session = factory.openSession(); Transaction tx = session.beginTransaction(); Query query = session.createQuery("from Customer c"); Iterator it = query.list().iterator(); while (it.hasNext ()){ Customer customer = (Customer) it.next(); ... } tx.commit(); session.close(); } |
Tuttavia, queste applicazioni di ibernazione ad alto traffico stanno riscontrando un grave problema di scalabilità. Sebbene siano in grado di scalare a livello di applicazione, il database o l'archiviazione dei dati non sono in grado di scalare con il numero crescente di carichi transazionali.
La memorizzazione nella cache distribuita Java è la tecnica migliore per risolvere questo problema perché riduce i costosi viaggi al database che causano colli di bottiglia nella scalabilità. Per questo motivo, Hibernate fornisce un'infrastruttura di memorizzazione nella cache che include cache di primo e secondo livello.
La cache di primo livello di Hibernate fornisce una cache standalone di base (in-proc) associata a Sessione oggetto ed è limitato alla sola sessione corrente. Ma il problema con la cache di primo livello di Hibernate è che non consente la condivisione di oggetti tra sessioni diverse. Se lo stesso oggetto è richiesto da sessioni diverse, tutti effettuano il viaggio del database per caricarlo, il che alla fine aumenta il traffico del database e causa problemi di scalabilità. Inoltre, quando la sessione viene chiusa, anche tutti i dati della cache vengono persi e la prossima volta è necessario recuperarli nuovamente dal database.
Queste applicazioni di ibernazione ad alto traffico con solo il primo livello quando distribuite nella web farm devono affrontare anche problemi di sincronizzazione della cache del server. Nella web farm, ogni nodo esegue un server web – Apache, Oracle WebLogic ecc. – con più istanze di httpd processare per evadere le richieste. E, iberna la cache di primo livello in ciascuno httpd processo di lavoro ha una versione diversa degli stessi dati memorizzati nella cache direttamente dal database.
Ecco perché Hibernate ti fornisce una cache di secondo livello con il modello del provider. Iberna la cache di secondo livello ti permette di collegare 3rd provider di cache distribuito (out-proc) per memorizzare nella cache gli oggetti tra sessioni e server. La cache di secondo livello di ibernazione è associata a SessionFactory oggetto ed è disponibile per l'intera applicazione, anziché per una singola sessione.
Quando abiliti la cache di secondo livello di Hibernate, ti ritroverai con due cache; uno è la cache di primo livello e l'altro è la cache di secondo livello. Hibernate tenta sempre di recuperare gli oggetti dalla cache di primo livello, se non riesce, tenta di recuperarli dalla cache di secondo livello. Se anche questo fallisce, gli oggetti vengono caricati direttamente dal database e anche memorizzati nella cache. Questa configurazione riduce significativamente il traffico del database perché la maggior parte dei dati è servita dal secondo livello cache distribuita.
NCache Java ha implementato un provider di memorizzazione nella cache di secondo livello di Hibernate estendendolo org.hibernate.cache.CacheProvider. Puoi collegarti facilmente NCache Provider di cache distribuita Java Hibernate con l'applicazione Hibernate senza modifiche al codice. NCache ti consente di scalare la tua applicazione Hibernate su configurazioni multi-server senza che il database diventi il collo di bottiglia. NCache fornisce anche tutte le funzionalità di memorizzazione nella cache distribuita a livello aziendale come la gestione delle dimensioni dei dati, la sincronizzazione dei dati tra server e database, ecc.
Puoi collegarti NCache Provider di memorizzazione nella cache Java Hibernate semplicemente modificando il file hibernate.cfg.xml e ncache.xml come segue
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<hibernate-configuration> <session-factory> <property name = "cache.provider_class"> alachisoft.ncache.integrations.hibernate.cache.NCacheProvider, alachisoft.ncache.integrations.hibernate.cache </property> </session-factory> </hibernate-configuration> <ncache> <region name = "default"> <add key = "cacheName" value = "myClusterCache"/> <add key = "enableCacheException" value = "false"/> <class name = "hibernator.BLL.Customer"> <add key = "priority" value = "1"/> <add key = "useAsync" value = "false"/> <add key = "relativeExpiration" value = "180"/> </class> </region> </ncache> |
Quindi, utilizzando NCache Provider di cache distribuita Java Hibernate puoi ridimensionare linearmente le tue applicazioni Hibernate senza modifiche al codice.
Quindi, scarica una versione di prova di 60 giorni completamente funzionante di NCache Enterprise e provalo tu stesso.
Voglio semplicemente dirti che sono solo un principiante dei blog e ho apprezzato moltissimo il tuo sito web. Molto probabilmente ho intenzione di aggiungere il tuo blog ai segnalibri. Vieni davvero con storie fantastiche.
Dato così tante informazioni in esso, questo tipo di articoli mantiene l'interesse degli utenti per il sito Web e continua a condividere di più.
formazione java a chennai
blog utile… grazie per la condivisione