powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring Cache Abstraction + EhCache
6 сообщений из 6, страница 1 из 1
Spring Cache Abstraction + EhCache
    #38788721
krutimsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер. В веб-приложении для кэширования используется связка Spring Cache Abstraction + EhCache.
Кэширую метод DAO-уровня:

@Override
@Cacheable(value="cityCache", key="#root.methodName")
public List<City> getActiveMainCities(){

Session sess = sessionFactory.getCurrentSession();
List<City> cities = (List<City>)sess.createSQLQuery("SELECT * FROM city WHERE cit_enable IS TRUE").addEntity(City.class).list();

return cities;
}

Метод Service-уровня выглядит так:
@Override
public List<City> getActiveMainCities(){

return cityDao.getActiveMainCities();
}

Далее, это метод вызывается в контроллере:
List<City> cities = cityService.getActiveMainCities();

И тут начинается самое интересное! Если в контроллере сделать так:
List<City> cities = cityService.getActiveMainCities();
cities.add(new City("London", true));

то закэшируется модифицированный список , т.е. содержащий город London, а не то что было на выходе метода DAO-уровня.
ПОЧЕМУ? Может быть так и должно быть? Пожалуйста если кто знает почему так происходит поделитесь знаниями )
...
Рейтинг: 0 / 0
Spring Cache Abstraction + EhCache
    #38788885
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krutimsoft,

Потому что вместо того чтобы заниматься фигней, стоит прочитать про кэш второго уровня Hibernate и включить его.
...
Рейтинг: 0 / 0
Spring Cache Abstraction + EhCache
    #38788888
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krutimsoftПожалуйста если кто знает почему так происходит поделитесь знаниями )
Можно предположить что кэш не делает snapshot объекта. А просто держит ссылку в памяти. Добавление к списку меняет тот же объект что и содержится к кэше.
Гугл по запросу EhCache mutable object выдаёт кучу статей с материалом по теме
V Object mutability gotcha: http://doanduyhai.wordpress.com/2012/07/01/cache-abstraction-in-spring-3/
Mutable Value Objects: http://ehcache.org/documentation/2.6/configuration/distributed-cache-configuration
...
Рейтинг: 0 / 0
Spring Cache Abstraction + EhCache
    #38789128
krutimsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz, какой ORM в highload проектах.
...
Рейтинг: 0 / 0
Spring Cache Abstraction + EhCache
    #38789136
krutimsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz, большое спасибо, помог разобраться
...
Рейтинг: 0 / 0
Spring Cache Abstraction + EhCache
    #38789184
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krutimsoftBlazkowicz, какой ORM в highload проектах.
Ну, без кэша, конечно. А с кэшированием всё нормально.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Spring Cache Abstraction + EhCache
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]