Ehcache 缓存Key 问题

09-08-24 huicn
项目中用Ehcache 对Service层进行缓存,其中的find 方法的参数都是 VO 对象,都是在Action 中new 出来的,Ehcache缓存的key 是类名+方法的名+参数名, 所以每次key 都不一样,请各位给个解决方案。

1
banq
2009-08-24 11:24
>key 是类名+方法的名+参数名

缓存的是对象实例,不是类,要将类和对象区别搞清楚。

但是,key也不能保存对象的hashcode,这是标识对象,不是标识领域模型,领域模型虽然以对象形式存在,但不等同于对象,所以,key应该是领域模型对象的标识.这个标识在ddd中有描述。

说白点,这个标识就是领域模型对象持久化保存到数据库中的唯一主键(如果是一个实体映射到一个表的话)。

cats_tiger
2009-08-24 16:30
>> 所以每次key 都不一样

这么说,你的缓存永远都不会被命中?

huicn
2009-08-24 19:27
缓存的是对象实例,不是类,要将类和对象区别搞清楚。

这个清楚,缓存的就是该方法返回的结果集,用到的key 就是类名+方法的名+参数名.

newobj
2014-04-27 19:28
倒是可以用包名+类型+方法名+参数.hashCode();来作为键.

下次执行同样的方法,可以实现读取缓存的效果.

但是这样有个问题,关联的数据跟新,怎么通知到这个key呢?

猜你喜欢