Hibernate es una biblioteca de mapeo relacional de objetos para el lenguaje Java. Le proporciona la asignación de clases de Java a la tabla de la base de datos y reduce el ciclo de desarrollo general. Debido a los beneficios que ofrece Hibernate, cada vez se desarrollan más aplicaciones transaccionales usando Hibernate. Aquí hay un ejemplo de Hibernate en una aplicación 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(); } |
Sin embargo, estas aplicaciones Hibernate de alto tráfico se encuentran con un problema de escalabilidad importante. Aunque pueden escalar a nivel de nivel de aplicación, su base de datos o almacenamiento de datos no puede escalar con el número creciente de carga transaccional.
El almacenamiento en caché distribuido de Java es la mejor técnica para resolver este problema porque reduce los costosos viajes a la base de datos que causan cuellos de botella en la escalabilidad. Por esta razón, Hibernate proporciona una infraestructura de almacenamiento en caché que incluye caché de primer y segundo nivel.
El caché de primer nivel de Hibernate le proporciona un caché independiente básico (en proceso) que está asociado con el Sesión objeto, y se limita a la sesión actual solamente. Pero, el problema con el caché de primer nivel de Hibernate es que no permite compartir objetos entre diferentes sesiones. Si diferentes sesiones requieren el mismo objeto, todas ellas hacen que la base de datos se dispare para cargarlo, lo que eventualmente aumenta el tráfico de la base de datos y causa un problema de escalabilidad. Además, cuando se cierra la sesión, todos los datos de la caché también se pierden y la próxima vez tendrá que recuperarlos de la base de datos.
Estas aplicaciones Hibernate de alto tráfico con solo el primer nivel cuando se implementan en la granja web también enfrentan un problema de sincronización de caché en el servidor. En la granja web, cada nodo ejecuta un servidor web (Apache, Oracle WebLogic, etc.) con varias instancias de httpd proceso para servir las solicitudes. Y, caché de primer nivel de Hibernate en cada httpd El proceso de trabajo tiene una versión diferente de los mismos datos almacenados en caché directamente desde la base de datos.
Es por eso que Hibernate le proporciona un caché de segundo nivel con modelo de proveedor. Hibernar caché de segundo nivel te permite enchufar 3rd proveedor de almacenamiento en caché distribuido (fuera de proceso) para almacenar objetos en caché entre sesiones y servidores. El caché de segundo nivel de Hibernate está asociado con Fábrica de sesiones objeto y está disponible para toda la aplicación, en lugar de una sola sesión.
Cuando habilita el caché de segundo nivel de Hibernate, termina con dos cachés; uno es caché de primer nivel y el otro es caché de segundo nivel. Hibernate siempre intenta recuperar los objetos del caché de primer nivel si falla al intentar recuperarlos del caché de segundo nivel. Si eso también falla, los objetos se cargan directamente desde la base de datos y también se almacenan en caché. Esta configuración reduce significativamente el tráfico de la base de datos porque la mayoría de los datos son atendidos por el segundo nivel. caché distribuida.
NCache Java ha implementado un proveedor de almacenamiento en caché de segundo nivel de Hibernate al extender org.hibernate.cache.CacheProvider. Puedes enchufarlo fácilmente NCache Proveedor de almacenamiento en caché distribuido Java Hibernate con su aplicación Hibernate sin ningún cambio de código. NCache le permite escalar su aplicación Hibernate a configuraciones de múltiples servidores sin que la base de datos se convierta en un cuello de botella. NCache también le proporciona todas las funciones de almacenamiento en caché distribuidas de nivel empresarial, como la gestión del tamaño de los datos, la sincronización de datos en el servidor y la base de datos, etc.
puedes enchufar NCache proveedor de almacenamiento en caché Java Hibernate simplemente modificando su hibernate.cfg.xml y ncache.xml de la siguiente manera
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> |
Por lo tanto, al usar NCache Como proveedor de caché distribuida de Java Hibernate, puede escalar linealmente sus aplicaciones de Hibernate sin ningún cambio de código.
Por lo tanto, descargue una versión de prueba de 60 días totalmente funcional de NCache Enterprise y pruébalo por ti mismo.
Simplemente quiero decirles que soy principiante en los blogs y disfruté absolutamente de su sitio web. Lo más probable es que planee marcar su blog como favorito. Realmente vienes con historias increíbles.
Dada tanta información, este tipo de artículos mantiene a los usuarios interesados en el sitio web y siguen compartiendo más.
Capacitación en Java en Chennai
blog útil... gracias por compartir