Moja aplikacja java prosi serwer mysql o zapytanie co 10 sekund.
Ręcznie wstawiam do tabeli nowy wiersz.
I hibernacja nie może go znaleźć.
Również po ręcznym usunięciu wiersza Hibernate pokazuje, że ten wiersz istnieje.
Sugeruję, że dzieje się tak, ponieważ buforowanie w trybie hibernacji.
Czy jest jakiś sposób, aby wyłączyć to w ogóle?
Dziękujemy!Jak wyłączyć całkowicie buforowanie w trybie hibernacji? (ze Spring 3, Hibernate z adnotacjami)
Odpowiedz
Czy masz na myśli pamięć podręczną pierwszego poziomu lub pamięć podręczną drugiego poziomu? Posiadanie pamięci podręcznej drugiego poziomu, takiej jak Ehcache, która buforuje elementy odpowiadające wierszom w tej samej tabeli, które modyfikujesz ręcznie, może spowodować zachowanie, które opisujesz. Pamięć podręczna pierwszego poziomu nie spowodowałaby takiego zachowania i nie sądzę, żeby i tak można ją wyłączyć.
Aby wyłączyć pamięć podręczną drugiego poziomu hibernacji, usuń z pliku konfiguracyjnego hibernacji, hibernate-cfg.xml
, wszystkie wiersze odnoszące się do pamięci podręcznej drugiego poziomu. Na przykład:
<!-- 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>
można wykorzystać hints.put ("javax.persistence.cache.retrieveMode" CacheRetrieveMode.BYPASS); w metodzie persist() może działać.
Aby "spróbować" wyłączyć pamięć podręczną pierwszego poziomu, eksmituję ją za każdym razem, gdy żąda się EntityManager. pracował dla mnie;)
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;
}
Dzięki, to zadziałało dla mnie. – CrushedPixel
- 1. Wyłączyć rejestrowanie w trybie hibernacji
- 2. domyślne buforowanie połączenia w trybie hibernacji
- 3. Nginx jak całkowicie wyłączyć buforowanie serwerów proxy
- 4. Jak tymczasowo wyłączyć buforowanie Spring cache
- 5. Jak skonfigurować kontroler RESTful w Spring 3 z adnotacjami?
- 6. Buforowanie hibernacji?
- 7. hibernate: tworzenie encji (z adnotacjami) w środowisku wykonawczym
- 8. Wiosna 3, Hibernate 4.1 Mutant 3 Samouczek?
- 9. Hibernate - różnica między adnotacjami i adnotacjami?
- 10. Jak wyłączyć buforowanie z NSURLSessionTask
- 11. Jak wyłączyć rejestrowanie debugowania Spring 3?
- 12. Wiosna 3 @Amianowane problemy z adnotacjami
- 13. Usuń buforowanie całkowicie w Ionic
- 14. NoClassDefFoundError z Spring maven hibernacji org/hibernate/ejb/HibernatePersistence
- 15. Jak wyłączyć buforowanie w liferay?
- 16. Problemy z Spring Hibernate
- 17. Jak całkowicie wyłączyć funkcję reagowania na Twitterze Bootstrap 3?
- 18. Jak zarządza sesją w trybie hibernacji?
- 19. Logowanie/wylogowywanie w REST ze Spring 3
- 20. Wyjątek w trybie GWT Dev + Spring 3.1 + Hibernate 4.0.1
- 21. Pisz mniej DAO ze Spring Hibernate za pomocą adnotacji
- 22. Jak wyłączyć buforowanie dla całej mojej witryny ASP.NET MVC 3?
- 23. Jak całkowicie wyłączyć Sitecore Analytics
- 24. Jak całkowicie wyłączyć pamięć podręczną?
- 25. Jak całkowicie wyłączyć przycisk łącza?
- 26. Wyłączyć buforowanie metodą sprężystości przez właściwość zewnętrzną
- 27. Jak korzystać z metody setParameterList() w trybie hibernacji?
- 28. Jak działa buforowanie w trybie PCX?
- 29. Jak mapować dynamicznie utworzoną tabelę w trybie hibernacji?
- 30. całkowicie wyłączyć przewijanie strony
Cześć Derek, dzięki lub twoje odpowiedzi! Hm, wygląda na to, że nie mam buforowania na drugim poziomie, może spróbuję usunąć pierwszy poziom? Jak mogę to zrobić? – gennad
Z tego co wiem, nie można wyłączyć pamięci podręcznej pierwszego poziomu, ale zgodnie z http://stackoverflow.com/questions/3943366/how-can-i-configure-hibernate-to-immediately-apply-all- save -updates-and-delete/3946939 # 3946939, Spring może umożliwić szybkie płukanie pamięci podręcznej pierwszego poziomu, co może skutecznie osiągnąć ten sam wynik. –