Spring 3.1 终于加入了Cache支持

11-02-24 banq
                   

Cache一般是对数据的缓存,数据库思维情形下,认为Cache只要和数据库在一起就可以,因此,过去Spring版本是没有缓存支持,因为他们认为Hibernate或JPA等ORM二级缓存支持就可以了。

是不是缓存只是持久层的事情呢?如果我们的架构中没有持久层只有模型层,或者持久层被下放到模型层的一个内部实现机制而已。

就象我们在电脑里面打字,我们面对的是编辑器中的“字”,而这些“字”实际就是在内存中“字”,我们按“保存”键就是将内存“字”持久化保存到硬盘上,这个动作如果软件能够自动做,那我们就不必做,实际上,现在很多NoSQL产品都是内存数据库,内含自动持久化内部实现机制而已。

如果我们的架构是以模型驱动开发为主,也就是DDD设计为主,而不是以关系数据库操作为主,那么,模型就只能存在内存中,而对模型的操作很显然应该是业务层框架必须做的事情。(JdonFramework从第一个版本就认识到这个问题,加入Cache支持)

所以,在一个MDD/DDD架构中,模型层是核心,模型中有实体 值对象和服务。这些都必须是业务层框架进行支持,目前比较好的是DCI框架来支持。

我们回过头来再看看Spring 3.1的cache支持是怎样的?它导入一般的缓存机制,可以缓存任何Java类 方法或库包,也可以和现有缓存机制比如ehcache或hazelcast支持,用以提高性能。

从它的发布说明书来看,Cache目前只用来提升性能用,还没有上升到对领域模型的支持高度来。Spring让我们要等待你多久才能引导大众走向模型驱动开发呢?抑或MDD/DDD真的太先进,太冒进?还是你的步伐太落后了呢?

Spring 3.1 M1: Cache Abstraction | SpringSource Team Blog

[该贴被banq于2011-02-24 10:50修改过]

                   

15
banq
2011-02-24 10:50

什么时候能够等到你对DDD模型的支持呢?我有时觉得如此在原地等待你是不是一种冒进后的迷茫?

SpeedVan
2011-02-24 16:06

做过桌面软件的程序员,都会知道:内存才是软件活动的地方。摆脱不了数据库,性能会被硬盘到内存的性能所绑定,也就是瓶颈所在。用Java,第一件app通常是Web app,而不是Desktop app,所以会被所谓的“前辈”所误导。

其实就是类似一个实验:“把文本的信息进行格式处理”,这个实验比起Web app更多的是Desktop app。初学的人,很容易就直接在文本上读一个处理一个,而不是想到,全部加载到内存快速处理。其实只要理解Cache的真正意义,就了解到web app的性能并不是在数据库读写上,而是在我们的设计上。

其实不懂的人可以做一个实验:做一个没有数据库,只有cache的web app。(数据库思维的程序员千万别觉得不可理喻,做过才知道呢)

lostalien
2011-02-25 16:50

我就觉得DDD确实有些先进了。或者说,用DDD去设计公司的业务,很多人都不会。。。。

jackhatedance
2011-03-02 22:43

cache本来就是用于提高性能的,而不是用于永久保存数据的。

楼上2位大师今天似乎有点失言了。

12Go 1 2 3 4 ... 12 下一页