首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

运用EhCache1.1与Hibernate所吃的亏

2012-11-10 
使用EhCache1.1与Hibernate所吃的亏“偶们的系统越来越慢了!”,这是最近一直在我耳边萦绕的一句话,向公司里

使用EhCache1.1与Hibernate所吃的亏

“偶们的系统越来越慢了!”,这是最近一直在我耳边萦绕的一句话,向公司里搞数据库的大牛咨询,发现是一些做汇总的语句在作怪,于是决定将这些数据做缓存。

办法想出来后,做起来也容易了。首先入我“法眼”的是ehcache,我们用hibernate,这个家伙是hibernate默认自带的(我们之前做的缓存是自己写的HashTable)。由于我们没有用spring运用EhCache1.1与Hibernate所吃的亏,否则用EhCacheFactoryBean和EhCacheManagerFactoryBean就方便了,偶自己写的缓存接口也是基于这个的,但现在是奢望了,于是自己写cache的初始化。由于论坛的“代码”功能好像用不了,我简单说一下碰到的问题:

我所有的初始化代码都是老老实实按着ehcache官网上的例子写的,唯一的不同在于我们的ehcache是1.1版的,CacheManager的创建必须要用createCacheManager才可以,而不能用new CacheManager();由于我没有换jar包的权力,于是将就了一下。当我准备好一切并且去调试的时候,发现我总是无法找到自己设置的cache,但是初始化cache的xml时没有任何异常。最后通过debug ehcache1.1的src发现,其CacheManager是sington的,有人在我之前初始化过了ehcache,于是我的初始化动作根本没有做。问题很简单了,是hibernate干的,在初始化时,我们先初始化了hibernate,然后初始化自定义的ehcache缓存,导致了问题,?把初始化的顺序改变一下,问题就解决了。

此时方明白Spring中EhCacheManagerFactoryBean注释中的含义:Note: As of Spring 2.0, this FactoryBean will by default create an independent?CacheManager instance, which requires EHCache 1.2 or higher. Set the "shared" flag to "true" to create a CacheManager instance that is shared at the VM level?(which is also compatible with EHCache 1.1).

发此文以做提醒自己之用。

.自己还是买了<应用rails进行敏捷开发>第一版来学习一下. .

刚才和boss谈过,他认为做页面缓存也可以,但是现在不必要,要做别的事!呵呵,此问题暂告一段落. 18 楼 giscat 2007-03-30   MVC ,缓存model即可

  19 楼 chenqj 2007-03-30   其实可以把部分内容静态化,然后include 20 楼 ahuaxuan 2007-03-30   giscat 写道引用hibernate的二级缓存其实还是很有用的,尤其对于一些字典表,配置表。
  这个属于hibernate系统级的缓存,
   我们讨论的缓存肯定是针对应用级的
这个二级缓存不属于hibernate系统级缓存,二级缓存本来就是应用级缓存,你可以用可以不用,可以对字典表,code表使用,更重要的是可以对业务表中检索很频繁的数据使用,hibernate的一次缓存才是所谓的系统级的缓存 21 楼 giscat 2007-03-30   chenqj 写道其实可以把部分内容静态化,然后include
include和缓存不是同一码事
  各个容器对include处理方式有差异,如果包含中文字符,应该尽量避免使用

热点排行