Witam
Potrzebuję Waszej pomocy... znowu :) utworzyłem projekt w netbeans maven->Web Application z providerem EclipseLink (JPA 2.1) i próbuję wyłączyć cache ponieważ baza wykonuje mi pewne operacje a aplikacja ich nie odświeża. Próbowałem w persistence.xml ustawić Shared Cache Mode na None, dodawać properties eclipselink.cache.shared.defoult na false niestety bez powodzenia. Serwer aplikacji który używam to GlassFish 4.1.1 NB w wersji 8.2.
Dziękuje z góry:)
Nie jesteś w stanie wyłączyć cache level 1 (entity manager). Ale możesz zrobić cache nieważnym dla danej encji (evictAll) dla konkretnego typu (zadziała na chwile):
https://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Caching/Cache_API
a jest możliwość ustawienia czasu po jakim ma pamięć odnawiać dane?
Po pierwsze wyłącz cache drugiego poziomu.
Po drugie używaj refresh
by aktualizować stan encji w EM.
Po trzecie przyjrzyj się CacheStoreMode
oraz adnotacji @Cachable
i ustaw odpowiednie ignorowanie dla poszczególnych encji.
Z rzeczy na nie. Nie jesteś wstanie wyłączyć cache lvl 1, bo ten jest "przypięty" do entity managera i wykorzystywany przez niego do wykonywania zapytań. Zapewnia też poprawność transakcji.
Nie możesz sterować cache lvl 1 za pomocą Cache API i jest to w dokumentacji jak wół:
Interface used to interact with the second-level cache. If a cache is not in use, the methods of this interface have no effect, except for contains, which returns false.
Nie możesz domyślnie ustawić timeout na cache, ale pogrzeb w bebechach implementacji cache, bo pewno to tam gdzieś siedzi.