|
|
|
Spring Cache Abstraction + EhCache
|
|||
|---|---|---|---|
|
#18+
Добрый вечер. В веб-приложении для кэширования используется связка 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-уровня. ПОЧЕМУ? Может быть так и должно быть? Пожалуйста если кто знает почему так происходит поделитесь знаниями ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2014, 23:25 |
|
||
|
Spring Cache Abstraction + EhCache
|
|||
|---|---|---|---|
|
#18+
krutimsoft, Потому что вместо того чтобы заниматься фигней, стоит прочитать про кэш второго уровня Hibernate и включить его. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 09:12 |
|
||
|
Spring Cache Abstraction + EhCache
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 09:18 |
|
||
|
Spring Cache Abstraction + EhCache
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, какой ORM в highload проектах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 12:00 |
|
||
|
Spring Cache Abstraction + EhCache
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, большое спасибо, помог разобраться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2014, 12:03 |
|
||
|
|

start [/forum/topic.php?fid=59&gotonew=1&tid=2126368]: |
0ms |
get settings: |
11ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
157ms |
get topic data: |
9ms |
get first new msg: |
7ms |
get forum data: |
3ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 238ms |
| total: | 473ms |

| 0 / 0 |
