Ehcache的简单使用
2015-11-30 00:00
239 查看
摘要: Hibernate3.3通过Ehcache实现启用二级缓存技术
前段时间公司的新项目要求使用Hibernate二级缓存,近期通过在网上也看了不少帖子。
ehcache是一个非常轻量级的框架,1.2以后就支持了集群,并且是Hibernate默认的缓存provider.
主要特性
1. 快速.
2. 简单.
3. 多种缓存策略
4. 缓存数据有两级:内存和磁盘,因此无需担心容量问题
5. 缓存数据会在虚拟机重启的过程中写入磁盘
6. 可以通过RMI、可插入API等方式进行分布式缓存
7. 具有缓存和缓存管理器的侦听接口
8. 支持多缓存管理器实例,以及一个实例的多个缓存区域
9. 提供Hibernate的缓存实现
10. 等等
下面是我的一些使用心得。
既然是hibernate二级缓存 首先当然要配置Hibernate了,我使用的是Hibernate3.3。
然后在src目录下创建ehcache.xml文件
ehcache.xml配置如下:
maxElementsInMemory:设置缓存中可以存放多少个对象。
eternal:设置缓存是否过期 值为true时则缓存永不过期,一旦设置了,那么timeToIdleSeconds和timeToLiveSeconds将失效
timeToIdleSeconds: 设置一个对象被访问后多少秒没有被再次访问就失效。0为无穷大
timeToLiveSeconds: 设置对象在创建以后多少秒没有被访问就失效。0为无穷大。
overflowToDisk:设置当缓存对象超过设置最大值时是否存入磁盘中。
memoryStoreEvictionPolicy:当缓存中对象超过maxElementsInMemory所设置的值后,ehcache将会根据指定的策略去清理内存,默认清理策略为 LRU (最少使用)。也可以设置为FIFO(先进先出)策略。
maxElementsOnDisk : 设置缓存对象在磁盘中的最大数量,0表示无限制。仅在overflowToDisk设置为true时有效。
diskSpoolBufferSizeMB: 设置磁盘缓存区的大小MB为单位。默认30MB。
diskStore: 设置当缓存数量大于maxElementsInMemory设置的值是缓存到磁盘中的位置。仅在overflowToDisk为true时有效。path有四种设置方法,1、直接设置路径。2、user.home用户主目录.3、user.dir用户当前工作目录。4、java.io.tmpdir默认临时缓存目录。
配置好ehcache.xml文件后,要配置Hibernate配置文件.
在配置文件中写入:
缓存提供类。2.1以上是这个。2.1以下为net.sf.hibernate.cache.EhCache。还有4.0以上应该不是这个文件了。
class-cache:设置缓存持久类。usage:设置缓存可读写。class:持久类全类名。region与ehcache中cache设置的name属性相同。不设置则为默认缓存策略。
设置持久类缓存有三种方法class-cache为其中一种。我看用着清晰方便就用的这种。还有一种注解形式,因为本人注解用的不太好所有没有研究这个。第三种方法就是,在Hibernate映射的*.hbm.xml文件中class标签下第一行设置
<cache usage="read-write"/>
注:SSH中hibernate配置的cache信息
前段时间公司的新项目要求使用Hibernate二级缓存,近期通过在网上也看了不少帖子。
ehcache是一个非常轻量级的框架,1.2以后就支持了集群,并且是Hibernate默认的缓存provider.
主要特性
1. 快速.
2. 简单.
3. 多种缓存策略
4. 缓存数据有两级:内存和磁盘,因此无需担心容量问题
5. 缓存数据会在虚拟机重启的过程中写入磁盘
6. 可以通过RMI、可插入API等方式进行分布式缓存
7. 具有缓存和缓存管理器的侦听接口
8. 支持多缓存管理器实例,以及一个实例的多个缓存区域
9. 提供Hibernate的缓存实现
10. 等等
下面是我的一些使用心得。
既然是hibernate二级缓存 首先当然要配置Hibernate了,我使用的是Hibernate3.3。
然后在src目录下创建ehcache.xml文件
ehcache.xml配置如下:
<?xml version="1.0" encoding="UTF-8"?> <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../config/ehcache.xsd"> <!-- 设置磁盘缓存路径 --> <diskStore path="d:/diskStore/"></diskStore> <!-- 默认配置,所有的类都遵循这个配置 --> <defaultCache maxElementsInMemory="100000" eternal="false" timeToIdleSeconds="25" timeToLiveSeconds="25" overflowToDisk="true" /> <!-- 为某各类单独配置 --> <cache name="com.example.entity.Students" maxElementsInMemory="100" enternal="false" timeToIdleSeconds="10000" timeToLiveSeconds="10000" memoryStoreEvictionPolicy="LRU" overflowToDisk="true"/> </ehcache>
maxElementsInMemory:设置缓存中可以存放多少个对象。
eternal:设置缓存是否过期 值为true时则缓存永不过期,一旦设置了,那么timeToIdleSeconds和timeToLiveSeconds将失效
timeToIdleSeconds: 设置一个对象被访问后多少秒没有被再次访问就失效。0为无穷大
timeToLiveSeconds: 设置对象在创建以后多少秒没有被访问就失效。0为无穷大。
overflowToDisk:设置当缓存对象超过设置最大值时是否存入磁盘中。
memoryStoreEvictionPolicy:当缓存中对象超过maxElementsInMemory所设置的值后,ehcache将会根据指定的策略去清理内存,默认清理策略为 LRU (最少使用)。也可以设置为FIFO(先进先出)策略。
maxElementsOnDisk : 设置缓存对象在磁盘中的最大数量,0表示无限制。仅在overflowToDisk设置为true时有效。
diskSpoolBufferSizeMB: 设置磁盘缓存区的大小MB为单位。默认30MB。
diskStore: 设置当缓存数量大于maxElementsInMemory设置的值是缓存到磁盘中的位置。仅在overflowToDisk为true时有效。path有四种设置方法,1、直接设置路径。2、user.home用户主目录.3、user.dir用户当前工作目录。4、java.io.tmpdir默认临时缓存目录。
配置好ehcache.xml文件后,要配置Hibernate配置文件.
在配置文件中写入:
<!-- 配置缓存提供类 --> <property name="hibernate.cache.provider_class"> org.hibernate.cache.EhCacheProvider </property> <!-- 启用二级缓存,这也是它的默认配置 --> <property name="hibernate.cache.use_second_level_cache"> true </property> <!-- 启用查询缓存 --> <property name="hibernate.cache.use_query_cache">true</property> <mapping resource="com/example/entity/Students.hbm.xml" /> <class-cache usage="read-write" class="com.example.entity.Students" region="com.example.entity.Students" />
缓存提供类。2.1以上是这个。2.1以下为net.sf.hibernate.cache.EhCache。还有4.0以上应该不是这个文件了。
class-cache:设置缓存持久类。usage:设置缓存可读写。class:持久类全类名。region与ehcache中cache设置的name属性相同。不设置则为默认缓存策略。
设置持久类缓存有三种方法class-cache为其中一种。我看用着清晰方便就用的这种。还有一种注解形式,因为本人注解用的不太好所有没有研究这个。第三种方法就是,在Hibernate映射的*.hbm.xml文件中class标签下第一行设置
<cache usage="read-write"/>
注:SSH中hibernate配置的cache信息
1 | < prop key = "hibernate.cache.provider_class" >org.hibernate.cache.EhCacheProvider</ prop > |
相关文章推荐
- Enterprise Library for .NET Framework 2.0缓存使用实例
- PowerShell中编程清空IE缓存方法
- PowerShell中使用.NET将程序集加入全局程序集缓存
- C#中缓存的基本用法总结
- wap开发中如何有效的利用缓存减少消息的传送量
- PHP基于文件存储实现缓存的方法
- smarty缓存用法分析
- 引用全局程序集缓存内的程序集的方法
- asp Response.flush 实时显示进度
- C#实现清除IE浏览器缓存的方法
- ASP.NET缓存管理的几种方法
- PHP文件缓存类实现代码
- 清除aspx页面缓存的程序实现方法
- C#缓存之SqlCacheDependency用法实例总结
- jQuery数据缓存用法分析
- Jquery validation remote 验证的缓存问题解决方法
- IE9下Ajax无法刷新数据的缓存问题解决方法
- Ajax获取页面被缓存的解决方法
- Hibernate Oracle sequence的使用技巧
- jsp Hibernate批量更新和批量删除处理代码