La mia app java chiede al server mysql una query ogni 10 secondi.
Inserisco manualmente nella tabella una nuova riga.
E Hibernate non riesce a trovarlo.
Anche quando rimuovo manualmente una riga, Hibernate mostra che questa riga esiste.
Suggerisco che è perché il caching Hibernate.
Esiste un modo per disattivarlo?
Grazie!Come disabilitare completamente la memorizzazione nella cache di Hibernate? (con Spring 3, Hibernate con annotazioni)
risposta
Intendi la cache di primo livello o la cache di secondo livello? Avere una cache di secondo livello come Ehcache che memorizza nella cache le entità che corrispondono alle righe nella stessa tabella che si modifica manualmente potrebbe causare il comportamento che si descrive. La cache di primo livello non causerebbe questo comportamento e, comunque, non penso che tu possa disabilitarlo.
Per disabilitare la cache di secondo livello di Ibernazione, rimuovere dal file di configurazione di sospensione, hibernate-cfg.xml
, tutte le righe che fanno riferimento alla cache di secondo livello. Per esempio:
<!-- 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>
è possibile utilizzare hints.put ("javax.persistence.cache.retrieveMode", CacheRetrieveMode.BYPASS); nel metodo persist() potrebbe funzionare.
Per "provare" a disabilitare la cache di primo livello, la sfratto ogni volta che viene richiesto un EntityManager. ha funzionato per me;)
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;
}
Grazie, questo ha funzionato per me. – CrushedPixel
- 1. Come posso disabilitare completamente la memorizzazione nella cache di Tomcat?
- 2. Spring + Hibernate con annotazioni: No Hibernate Session legata al thread
- 3. Come disattivare la cache hibernate
- 4. Scrive meno DAO con Spring Hibernate utilizzando le annotazioni
- 5. Disabilitare la memorizzazione nella cache nel pallone
- 6. Come usare JodaTime con Spring e Hibernate?
- 7. Spring Boot + JPA2 + Hibernate - abilita la cache di secondo livello
- 8. Spring + Hibernate: utilizzo cache memoria piano query
- 9. Come cancellare tutta la cache di Hibernate (ehcache) usando Spring?
- 10. Come disabilitare la memorizzazione nella cache di SQLAlchemy?
- 11. Spring Security 3 autenticazione del database con Hibernate
- 12. Come gestire la query di join in Hibernate e Spring con annotazioni?
- 13. come disabilitare la memorizzazione nella cache di tomcat?
- 14. Hibernate criteri di join con 3 tavoli
- 15. Hibernate cache di secondo livello
- 16. Configurazione Spring di C3P0 con Hibernate?
- 17. Hibernate problema dialetto con configurazione di Spring
- 18. Come utilizzare le annotazioni di validazione di Hibernate con enumerazioni?
- 19. Generazione schema di annotazioni Maven + Hibernate
- 20. Servlet Java come disabilitare la memorizzazione nella cache della pagina
- 21. Interrogazione Hibernate cache di
- 22. Utilizzare le annotazioni Spring per applicare automaticamente Hibernate Interceptor?
- 23. HibernateInterceptor con spring 3.1 e hibernate 4.01
- 24. Database multipli con Spring + Hibernate + JPA
- 25. Configura sessionFactory con Spring, Hibernate e LocalSessionFactoryBuilder
- 26. Come posso disabilitare la cache di secondo livello di alcune entità in Hibernate senza modificare le annotazioni
- 27. Hibernate 3 composita una chiave con GeneratedValue
- 28. MySQL enum con hibernate
- 29. Come implementare la memorizzazione nella cache con Kleisli
- 30. DAO, Spring and Hibernate
Ciao Derek, grazie o le vostre risposte! Hm, sembra che non abbia il caching di secondo livello, forse per provare a rimuovere il primo livello? Come posso fare questo? – gennad
Per quanto ne so, non è possibile disabilitare la cache di primo livello, ma in base a http://stackoverflow.com/questions/3943366/how-can-i-configure-hibernate-to-immediately-apply-all-saves -aggiornamenti-e-cancella/3946939 # 3946939, Spring può abilitare lo sciacquo colossale della cache di primo livello, che effettivamente raggiungerebbe lo stesso risultato. –