Mi aplicación java pide al servidor mysql una consulta cada 10 segundos.
Inserté manualmente en la tabla una nueva fila.
E Hibernate no puede encontrarlo.
Además, cuando elimino manualmente una fila, Hibernate muestra que esta fila existe.
Sugiero que sea porque el almacenamiento en caché de Hibernate.
¿Hay alguna forma de desactivarlo?
¡Gracias!Cómo deshabilitar por completo Hibernar el almacenamiento en caché? (con Spring 3, Hibernate con anotaciones)
Respuesta
¿Te refieres a la memoria caché de primer nivel o la memoria caché de segundo nivel? Tener un caché de segundo nivel Hibernate como Ehcache que almacena en caché las entidades que corresponden a las filas en la misma tabla que modifica manualmente podría causar el comportamiento que usted describe. El caché de primer nivel no causaría este comportamiento, y no creo que puedas desactivarlo, de todos modos.
Para deshabilitar la memoria caché de segundo nivel de Hibernate, elimine del archivo de configuración de Hibernate, hibernate-cfg.xml
, todas las líneas que hacen referencia a la memoria caché de segundo nivel. Por ejemplo:
<!-- Enable the second-level cache -->
<property name="hibernate.cache.provider_class">
net.sf.ehcache.hibernate.EhCacheProvider
</property>
<property name="hibernate.cache.region.factory_class">
net.sf.ehcache.hibernate.EhCacheRegionFactory
</property>
<property name="hibernate.cache.use_query_cache">true</property>
<property name="hibernate.cache.use_second_level_cache">true</property>
<property name="hibernate.cache.use_structured_entries">true</property>
<property name="hibernate.cache.generate_statistics">true</property>
puede utilizar hints.put ("javax.persistence.cache.retrieveMode", CacheRetrieveMode.BYPASS); en su método persist() puede funcionar.
Para "intentar" desactivar el caché de primer nivel, lo desalojo cada vez que se solicita un EntityManager. funcionó para mí;)
public EntityManager getEntityManager(){
if(emf == null){
if (parameters == null) {
emf = Persistence.createEntityManagerFactory(persistenceUnitName);
} else {
emf = Persistence.createEntityManagerFactory(persistenceUnitName, parameters);
}
} else {
emf.getCache().evictAll();
}
EntityManager em = emf.createEntityManager();
return em;
}
Gracias, esto funcionó para mí. – CrushedPixel
- 1. Nginx cómo deshabilitar por completo el almacenamiento en memoria caché Proxy
- 2. MySQL UTF8 con Hibernate 3 y Spring
- 3. ¿Almacenamiento en caché de Hibernate?
- 4. Interceptores Hibernate con anotaciones
- 5. Cómo deshabilitar el almacenamiento en memoria caché de hibernación
- 6. Escribir menos DAO con Spring Hibernate usando las anotaciones
- 7. Cómo deshabilitar el almacenamiento en caché de freemarker en Spring MVC
- 8. Spring: hibernate + ehcache
- 9. Cómo deshabilitar el almacenamiento en caché de SQLAlchemy?
- 10. Hibernar: entidades con anotaciones de primavera no escaneadas desde jar
- 11. Inserciones por lotes con Hibernate & Spring
- 12. Cómo deshabilitar el almacenamiento en caché en liferay?
- 13. Problemas con Spring Hibernate
- 14. ¿Cómo usar JodaTime con Spring e Hibernate?
- 15. cómo deshabilitar el almacenamiento en memoria caché de tomcat?
- 16. El entorno de desarrollo Rails 3 mantiene el almacenamiento en caché, incluso sin almacenamiento en caché?
- 17. Deshabilitar temporalmente el almacenamiento en caché de Django
- 18. Spring + Hibernate con anotaciones: Ninguna sesión de Hibernate vinculada al thread
- 19. ¿Cómo puedo usar SimpleFormController con Validator con Spring 3?
- 20. ¿Cómo puedo desactivar el almacenamiento en caché de Tomcat por completo?
- 21. Inserciones masivas con Spring/Hibernate
- 22. ver con Hibernar
- 23. Deshabilitar el almacenamiento en caché del lado del cliente
- 24. Deshabilitar el almacenamiento en caché de JavaScript en Google Chrome
- 25. ¿Cómo borrar todo el caché de Hibernate (ehcache) usando Spring?
- 26. Permitir el almacenamiento en caché con Spring MVC MVC: Etiqueta de recursos
- 27. ¿Por qué el almacenamiento en caché de consultas con Hibernate hace que la consulta sea diez veces más lenta?
- 28. Hibernar El segundo nivel de almacenamiento en caché no parece funcionar
- 29. Virtual Path Provider ¿Deshabilitar el almacenamiento en caché?
- 30. Estrategias de almacenamiento en caché con Memcached?
Hola Derek, gracias o tus respuestas! Hm, parece que no tengo un caché de segundo nivel, ¿tal vez para tratar de eliminar el 1er nivel? ¿Cómo puedo hacer esto? – gennad
Por lo que yo sé, no puede deshabilitar la memoria caché de primer nivel, pero de acuerdo con http://stackoverflow.com/questions/3943366/how-can-i-configure-hibernate-to-immediately-apply-all-saves -updates-and-delete/3946939 # 3946939, Spring puede habilitar el enjuague ansioso de la memoria caché de primer nivel, lo que efectivamente lograría el mismo resultado. –