Tôi đang sử dụng bộ nhớ cache cấp 2 và bộ nhớ cache truy vấn. Tôi có thể biết cách lập trình xóa tất cả bộ đệm không?Làm thế nào để xóa tất cả bộ nhớ đệm Hibernate (ehcache) bằng Spring?
Trả lời
Để xóa bộ nhớ cache phiên sử dụng session.clear()
Để xóa cấp 2 sử dụng bộ nhớ cache this code snippet
Nếu bạn cắm vào đất nung, bạn cũng có khả năng chạy các Terracotta Dev Console có thể kiểm tra thống kê về cache, bật và tắt bộ nhớ cache và xóa nội dung bộ nhớ cache khỏi giao diện người dùng.
Chức năng này cũng có sẵn từ hạt JMX.
Đoạn mã đã nêu trong Bozho câu trả lời là bị phản đối trong Hibernate 4.
Theo Hibernate javadoc, bạn có thể sử dụng org.hibernate.Cache.evictAllRegions()
:
đuổi dữ liệu từ tất cả các vùng truy vấn.
Sử dụng API:
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.
}
Ngoài ra, bạn có thể xóa tất cả dữ liệu từ một phạm vi cụ thể:
org.hibernate.Cache.evictCollectionRegions()
org.hibernate.Cache.evictDefaultQueryRegion()
org.hibernate.Cache.evictEntityRegions()
org.hibernate.Cache.evictQueryRegions()
org.hibernate.Cache.evictNaturalIdRegions()
Bạn có thể muốn kiểm tra the JavaDoc for hibernate Cache interface (Hibernate 4.3).
Và cũng có thể, second-level cache eviction từ hướng dẫn phát triển ngủ đông (4.3).
Tôi muốn xóa dữ liệu bộ nhớ cache khỏi bộ nhớ cache cấp 2 bằng cách gọi phương thức bên dưới: - sessionFactory.getCache(). EvictEntityRegions(); Tôi chỉ muốn biết, có bất kỳ tác hại nào trong việc này không? Ví dụ: - Điều gì sẽ xảy ra nếu tôi cố xóa bộ nhớ cache ở giữa giao dịch? –
Tôi đoán nó phụ thuộc vào chiến lược và nhà cung cấp bộ nhớ đệm của bạn. Bạn có thể cần phải kiểm tra nó với một trong những lựa chọn. Tài liệu tham chiếu mô tả các cài đặt khác nhau. – Dino
Tôi đang sử dụng @Cache (usage = CacheConcurrencyStrategy.READ_WRITE). Tôi có một case.Suppose nếu một số giao dịch đang chạy để có được dữ liệu từ và bộ nhớ cache cấp 2 có dữ liệu tại thời điểm đó. Đồng thời, một luồng khác gợi lên tất cả các vùng lưu trữ trong khi giao dịch trước đó chưa hoàn tất. Sau đó, những gì sẽ xảy ra trong trường hợp này. Tôi có thể nhận được null từ bộ nhớ cache trong giao dịch đó và nhấn db sẽ xảy ra không? Có bất kỳ cơ hội nào của bất kỳ vấn đề nào không? –
bạn có thể đi với điều này cũng
request.getSession().invalidate();
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.setHeader("Pragma", "no-cache");
response.setDateHeader("Expires", 0);
HttpSession và hibernate session là những thứ khác nhau. –
Nếu bạn muốn xóa bộ nhớ cache cấp 2, sử dụng api sessionFactory.evictEntity(entityName)
Code:
/**
* Evicts all second level cache hibernate entites. This is generally only
* needed when an external application modifies the database.
*/
public void evict2ndLevelCache() {
try {
Map<String, ClassMetadata> classesMetadata = sessionFactory.getAllClassMetadata();
for (String entityName : classesMetadata.keySet()) {
logger.info("Evicting Entity from 2nd level cache: " + entityName);
sessionFactory.evictEntity(entityName);
}
} catch (Exception e) {
logger.logp(Level.SEVERE, "SessionController", "evict2ndLevelCache", "Error evicting 2nd level hibernate cache entities: ", e);
}
}
Để biết thêm chi tiết về cấp 2 bộ nhớ cache refer
- 1. Bộ nhớ đệm Hibernate?
- 2. Làm thế nào để xóa bộ nhớ đệm MKMapView?
- 3. Làm thế nào để xóa bộ nhớ đệm Sprockets?
- 4. Bộ nhớ đệm mùa xuân so với bộ nhớ đệm
- 5. Làm thế nào để xóa bộ nhớ cache/bộ nhớ đệm in trên MacOSX
- 6. làm thế nào để xóa/xóa bộ đệm mysql innodb?
- 7. Làm cách nào để buộc Windows xóa tất cả dữ liệu bộ nhớ cache trên đĩa?
- 8. Hibernate EHCache và MemCache
- 9. bộ nhớ đệm ổi so với tiêu chuẩn ehcache
- 10. Hành vi bộ nhớ Ehcache thấp
- 11. Xóa tất cả bộ đệm trống trong VIM
- 12. Làm thế nào để xóa tất cả bộ đệm osm tiles trên máy chủ của riêng tôi
- 13. Cấu hình EHCache cho Spring3.1.1 và Hibernate
- 14. Làm thế nào để sử dụng MySQL chuẩn bị báo cáo bộ nhớ đệm?
- 15. Làm cách nào để tắt bộ nhớ đệm trên Firefox?
- 16. Hibernate Vấn đề bộ nhớ đệm truy vấn cấp hai với cùng một mệnh đề
- 17. Làm thế nào để xóa bộ nhớ cache trong Solr?
- 18. Grails \ Hibernate: Để lưu bộ nhớ cache hoặc không lưu vào bộ nhớ cache?
- 19. Làm thế nào để tôi yank tất cả các dòng phù hợp vào một bộ đệm?
- 20. làm thế nào để âm thầm "Lưu tất cả bộ đệm" trong Emacs?
- 21. ray giá bộ nhớ cache - cách xóa thủ công tất cả bộ nhớ cache
- 22. Có cách nào để xóa khóa bộ nhớ phiên cho tất cả người dùng không?
- 23. Làm thế nào để sử dụng Magento bộ nhớ đệm trong khi sử dụng "API Magento"
- 24. Làm thế nào để theo dõi bộ nhớ trống (bao gồm bộ đệm và bộ đệm) trong java?
- 25. Làm cách nào để xóa bộ nhớ đệm trên đĩa trong Windows?
- 26. Làm thế nào để đệm bộ đệm trong bộ nhớ và ghi nó từ một chủ đề chuyên dụng
- 27. Kích thước bộ nhớ cache Ehcache khi chạy
- 28. Làm thế nào để làm nổi bật tất cả các lần xuất hiện của một từ trong bộ đệm Emacs?
- 29. Làm thế nào để xóa/xóa bộ nhớ cache đĩa Windows READ trong C#?
- 30. Bộ nhớ cache, tắt bộ nhớ đệm
Đối với các phiên bản hiện đại của Hibernate, sẽ tốt hơn nếu theo dõi @ dino's câu trả lời. – JorgeHortelano