所以说,本意已经不是从cache本身出发了,而是需要一种东西,用到cache来支持而已,当然现在知道in-memory data了,那么“东西”一词就用in-memory data代替吧。而没用in-memory data,而用cache和数据库模拟实现,那么cache就充当容器存在了,但它在系统与数据库之间仍然是一个缓存角色。角度不同,致使看法不同了。

至于140个字,这个……比较惭愧,我无论总结知识还是突显灵感,总是在长篇大论的。因为知识是一连串的,所以要覆盖全面,而灵感要谈述思维和论证,所以又长篇。140个字我最多也就写写思维,涉及技术写这么少有点不习惯。不过也受教了,现在开始练练。

首先我道歉,我确实在cache的处理方式上认识错误,cache确实是存引用的。也就是感觉cache为了保持对象不被jvm回收而增加它的引用。在C/C++需要手工delete的东西为了在java中的不得不想办法避免回收。

不过还是那句话,cache是cache,ehcache也是必须使用Element,我的理解就是一个对对象指针的一个包装。cache不能代替持久层。而利用cache来避免对象被回收更感觉是一种对cache的用法,而不是cache的设计本意。

cache是临时的,存储是永久的,在业务上她们描述了不同的生命周期。
存储更趋向于存储支持,无论是内存还是进入硬盘等各种介质;cache的生命周期依赖于对象或者业务过程,她的目的是快速的反复使用。
Hibernate等的cache问题在于距离最终的对象和业务过程太远了,因此导致了极端的效率低下(相对来说),Spring的cache效果也要依赖于能够在多大程度上依附于业务过程和对象本身。期待。。。。

Spring真是越来越强大了

2011年06月10日 13:51 "@lea520"的内容
Spring真是越来越强大了 ...

Twitter 从Ruby的Rails移植到Java的经验证明:
Cache缓存+JVM微调是Java/JVM核心竞争力,也是最容易被大家忽视的。

因为很多使用Java(包括Spring + Hibernate)只是当作SQL语句的包装器来使用,负载主要集中在数据库上,根本不会使用In-memory Cache(JavaEE 7新标准核心,也不会花费心思在JVM调试上)。

Spring3版本才加入Spring支持,这一步已经晚了落后了,JdonFramework一开始就集成了Cache。关键方向性问题不能含糊。


[该贴被banq于2011-07-06 08:55修改过]

我来谈谈我的理解:
Spring cache的引入 实际 上是慢慢 DDD方式转型.
因为DDD 很重要的2个概念
1:独立持久层,因该在Spring边界中
2:有独立的生命周期
Spring cache的引入让 Spring 开始间接的支持DDD了.
因为cache Bean有可控的 生命周期

如果Spring 3.1加入Cache是出于对性能优化的考虑,那么DDD中所说的缓存是不是可以理解为对象缓存,而Hibernate的缓存是查询缓存?我所理解的缓存:
1.系统缓存
2.查询缓存
3.对象缓存
DDD所说缓存是另一种缓存吗?

2011年08月19日 14:52 "@liujian1979"的内容
DDD所说缓存是另一种缓存吗? ...

应该是对象缓存,见这个链接详细说明:http://www.jdon.com/cache.html

著名软件大师前辈Martin Fowler的一篇 LMAX架构 文章,应该对前面的争论做了一个全面详细的了结。
[该贴被admin于2011-09-01 16:00修改过]

不管是内存CACHE也好,还是数据库也好,他们都仅仅是一种数据存储方式,只不过因为考虑到性能问题,我们经常会采用CACHE替代数据库罢了。

CACHE的价值主要体现在三点:
1,节省数据寻址、读取时间(借助更高效的存储设备实现,比如内存替代磁盘);
2,节省请求、响应时间(数据的应用方与提供方的通讯时间)
3,节省数据运算时间(缓冲结果数据比缓冲原始数据效果更佳)

满足之上其中之一或更多的都可以称之为缓存。
其中第一条被普遍认为是CACHE的核心,大多数的缓存都是基于这一条来实现的,但是第二、三条其实同样重要,只不过应用相对较少罢了,特别是第二条。

感觉自己认识的还是比较片面,不大好想象,有没有比较具体的模型缓存实现能举例一下呢?

2011年09月09日 16:54 "@nevernam"的内容
没有比较具体的模型缓存实现能举例一下呢 ...

真不想做广告,看开源Jdon框架吧,里面有代码开发步骤:
JdonFramework模型驱动快速开发
[该贴被banq于2011-09-09 17:48修改过]