2019独角兽企业重金招聘Python工程师标准>>>
前段时间公司的新项目要求使用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标签下第一行设置
注:SSH中hibernate配置的cache信息
1 | < prop key &#61; "hibernate.cache.provider_class" >org.hibernate.cache.EhCacheProvider prop > |