हाइबरनेट JavaDoc के अनुसार, आप org.hibernate.Cache.evictAllRegions()
का उपयोग कर सकते हैं :
evictAllRegions() कैश से सभी डेटा को बेदखल करें।
सत्र और सत्र फ़ैक्टरी का उपयोग करना:
Session session = sessionFactory.getCurrentSession();
if (session != null) {
session.clear(); // internal cache clear
}
Cache cache = sessionFactory.getCache();
if (cache != null) {
cache.evictAllRegions(); // Evict data from all query regions.
}
1) यदि आपको केवल एक इकाई को अपडेट करने की आवश्यकता है (यदि सीधे डीबी से आप केवल कुछ संस्थाओं को अपडेट करेंगे) पूरे सत्र में नहीं, तो आप उपयोग कर सकते हैं
<ब्लॉकक्वॉट>evictEntityRegion(Class entityClass) दिए गए क्षेत्र से सभी निकाय डेटा को निकालता है (अर्थात
2) यदि आपके पास बहुत सी इकाइयां हैं, जिन्हें सीधे डीबी से अपडेट किया जा सकता है, तो आप इस विधि का उपयोग कर सकते हैं जो सभी इकाइयों को दूसरे स्तर के कैश से निकाल देता है (हम इस विधि को जेएमएक्स या अन्य व्यवस्थापक टूल के माध्यम से व्यवस्थापकों को उजागर कर सकते हैं):
/**
* Evicts all second level cache hibernate entites. This is generally only
* needed when an external application modifies the game databaase.
*/
public void evict2ndLevelCache() {
try {
Map<String, ClassMetadata> classesMetadata = sessionFactory.getAllClassMetadata();
Cache cache = sessionFactory.getCache();
for (String entityName : classesMetadata.keySet()) {
logger.info("Evicting Entity from 2nd level cache: " + entityName);
cache.evictEntityRegion(entityName);
}
} catch (Exception e) {
logger.logp(Level.SEVERE, "SessionController", "evict2ndLevelCache", "Error evicting 2nd level hibernate cache entities: ", e);
}
}
3) पोस्टग्रेस्क्ल + हाइबरनेट के लिए यहां एक और दृष्टिकोण का वर्णन किया गया है, मुझे लगता है कि आप ओरेकल के लिए कुछ ऐसा ही कर सकते हैं