Как создать кэш, чтобы лишний раз не ходить в базу - Хибернейт (hibernate)?

Рейтинг: 0Ответов: 2Опубликовано: 29.03.2011

Никак не могу написать идеальное решение - хочу создать кэш, чтобы закидывать туда часто вызываемые данные. Например, имеем код:

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>();
    ...

Подскажите решение по-лучше)

Ответы

Ответов пока нет.