Oracle
 sql >> база данни >  >> RDS >> Oracle

Изчистете кеша на хибернация 2-ро ниво след ръчна актуализация на DB

Според Hibernate JavaDoc, можете да използвате org.hibernate.Cache.evictAllRegions() :

evictAllRegions() Изважда всички данни от кеша.

Използване на Session и SessionFactory:

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) Ако имате нужда от актуализиране само на един обект (ако директно от db ще актуализирате само определени обекти), а не цялата сесия, можете да използвате

evictEntityRegion(Class entityClass) Изважда всички данни за обект от дадения регион (т.е.

2) Ако имате много обекти, които могат да бъдат актуализирани директно от db, можете да използвате този метод, който изхвърля всички обекти от кеша от 2-ро ниво (можем да изложим този метод на администратори чрез JMX или други администраторски инструменти):

/**
 * 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) Тук е описан друг подход за postgresql+hibernate, мисля, че можете да направите нещо подобно за Oracle като това



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Връщане на стойност от sql скрипт към shell скрипт

  2. Ред на изпълнение на условията в SQL клауза „къде“.

  3. Oracle Cloud:Създаване на база данни за автономна обработка на транзакции (ATP).

  4. Oracle:как да групирате по диапазон?

  5. Oracle ORA-30004 при използване на функция SYS_CONNECT_BY_PATH,