Как создать кэш, чтобы лишний раз не ходить в базу - Хибернейт (hibernate)?
Никак не могу написать идеальное решение - хочу создать кэш, чтобы закидывать туда часто вызываемые данные. Например, имеем код:
public static List<EntityCity> getCities() {
Session session = HibernateUtils.getSessionFactory().openSession();
session.beginTransaction();
List<EntityCity> list = (List<EntityCity>) session.createQuery("...").list();
session.getTransaction().commit();
session.close();
return list;
}
Вызываю так:
Object fromCache = MyCache.get(MyCacheKeys.ENTITY_CITIES);
if (fromCache != null) {
return (List<EntityCity>) fromCache;
}
Класс MyCacheKeys примерно такой:
public class SMCacheKeys {
public static String ENTITY_CITIES = "from EntityCity where active = 'true'";
}
Кэш такой:
public class MyCache {
private static HashMap<Integer, Object> cache = new HashMap<Integer, Object>();
...
Подскажите решение по-лучше)
Источник: Stack Overflow на русском