“偶们的系统越来越慢了!”,这是最近一直在我耳边萦绕的一句话,向公司里搞数据库的大牛咨询,发现是一些做汇总的语句在作怪,于是决定将这些数据做缓存。
办法想出来后,做起来也容易了。首先入我“法眼”的是ehcache,我们用hibernate,这个家伙是hibernate默认自带的(我们之前做的缓存是自己写的HashTable)。由于我们没有用spring,否则用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).
发此文以做提醒自己之用。
分享到:
相关推荐
6. **与ORM框架的集成**:Ehcache最初在Hibernate中被广泛使用,它作为Hibernate的二级缓存插件,显著提高了数据访问速度。通过配置,Ehcache可以轻松地与其他ORM框架如MyBatis、TopLink等集成。 7. **API使用**:...
7. **ehcache-1.2.4.jar**:Ehcache是一个广泛使用的内存缓存系统,Hibernate可以集成Ehcache来提高数据读取性能,通过缓存策略减少数据库访问。 8. **hibernate-jpa-2.0-api-1.0.1.Final.jar**:这个jar包包含了...
Ehcache允许开发者进行个性化定制,例如更改缓存的存储位置、使用不同的缓存名称,甚至利用Ehcache 1.1版本后引入的特性,如当内存满时将数据自动存储到硬盘,以及更丰富的缓存策略和事件监听器。 总结来说,...
作为Hibernate的默认缓存提供者,Ehcache在提高应用程序性能方面发挥着重要作用。 ##### 1.1 原理结构 Ehcache的内部架构主要分为三个层次: - **CacheManager**:作为操作Ehcache的入口,可以通过`CacheManager....
hibernate-3.2\lib\antlr-2.7.6.jar hibernate-3.2\lib\...hibernate-3.2\lib\dom4j-1.6.1.jar hibernate-3.2\lib\ehcache-1.1.jar hibernate-3.2\hibernate3.jar hibernate-3.2\lib\log4j-1.2.13.jar
hibernate-3.2\lib\antlr-2.7.6.jar hibernate-3.2\lib\...hibernate-3.2\lib\dom4j-1.6.1.jar hibernate-3.2\lib\ehcache-1.1.jar hibernate-3.2\hibernate3.jar hibernate-3.2\lib\log4j-1.2.13.jar
`lib`目录下则包含了与Hibernate 3.2协同工作的其他第三方库,这些库文件是Hibernate正常工作所必需的,例如: 1. `cglib-nodep.jar`: CGLIB是一个代码生成库,用于为Java类创建子类,主要用于Hibernate的动态代理...
**hibernate3.6.0所需jar包详解** Hibernate是一个强大的对象关系映射(ORM)框架,它允许Java开发者将数据库操作转化为面向对象的代码,极大地简化了数据层的编程工作。在Hibernate 3.6.0版本中,为了实现其功能,...
5. **ehcache-1.2.3.jar**:EhCache是Hibernate常用的二级缓存提供商,它可以提高数据访问速度,减少对数据库的直接访问,从而提升系统性能。 6. **commons-collections-2.1.jar**:Apache Commons Collections提供...
1.1 ORM概述:ORM是Object-Relational Mapping的缩写,它提供了一种将面向对象的编程模型与关系型数据库之间的映射机制,使得开发者可以使用面向对象的方式来操作数据库,避免了繁琐的SQL编写。 1.2 Hibernate概述...
commons-logging-1.1.1.jar,dom4j-1.6.1.jar,ehcache-1.5.0.jar,hibernate3.jar,hibernate-jpa-2.0-api-1.0.0.Final.jar,javassist-3.12.0.GA.jar,jta-1.1.jar,slf4j-api-1.6.1.jar,slf4j-log4j12-1.6.1.jar...
描述"hibernate4.0.0必须的jar包文件"表明这些jar文件是开发或运行使用Hibernate 4.0.0的Java项目所必需的。这些文件包含了Hibernate框架的核心组件和依赖库,使得开发者能够方便地在应用程序中集成Hibernate功能。 ...
《Hibernate开发指南》是一本专为Java开发者设计的详尽指南,旨在帮助他们掌握和精通Hibernate框架的使用。Hibernate是一个开放源代码的对象关系映射(ORM)框架,它简化了数据库编程,使得开发者可以使用面向对象的...
以下JAR包: antlr-2.7.5H3.jar asm.jar cglib-2.1.2.jar commons-collections-2.1.1.jar commons-pool.jar dom4j-1.6.1.jar ehcache-1.1.jar hibernate3.jar jta.jar log4j-1.2.11.jar Standard.jar
基于网上很多朋友在问JSF+Spring+Hibernate的使用方法,于是抽空写了个小例子希望大家提出宝贵意见。 采用DBUnit测试 mysql数据库脚本: 新建test数据库,初始化脚本 create table tt(id int primary key,name ...
##### 1.1 Hibernate的Lib - **Antlr.jar:** 用于解析SQL语法。 - **Cglib.jar:** 用于动态代理,实现对象增强。 - **Asm.jar:** 字节码操作框架。 - **Asm-attrs.jar:** Asm的一个扩展库,支持更多的字节码操作...
添加Hibernate3.6的核心类库,包含:hibernate3.jar、antlr-2.7.6.jar、cglib-nodep-2.1_3.jar、commons-collections-3.1.jar、dom4j-1.6.1.jar、ehcache-1.5.0.jar、hibernate-jpa-2.0-api-1.0.0.Final.jar、...
hibernate-ehcache-5.0.7.Final.jar hibernate-entitymanager-5.0.7.Final.jar hibernate-envers-5.0.7.Final.jar hibernate-infinispan-5.0.7.Final-tests.jar hibernate-infinispan-5.0.7.Final.jar ...