1.文件转载于:http://hi.baidu.com/xusuofei/blog/item/609468d0bc374e8ba0ec9c88.html
2.配置二级缓存的主要步骤:
(1)准备
把ehcache-1.2.3.jar加入到classpath中
在hibernate.cfg.xml中加入EHCache缓存插件的提供类
Category.hbm.xml
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE
hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"
http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd
">
<hibernate-mapping>
<class name="org.qiujy.domain.cachedemo.Category"
table="categories">
<!—
配置缓存,必须紧跟在class元素后面
对缓存中的Category对象采用读写型的并发访问策略
-->
<cache usage="read-write"/>
<id
name="id" type="java.lang.Long">
<column name="id"
/>
<generator class="native" />
</id>
<!-- 配置版本号,必须紧跟在id元素后面 -->
<version
name="version" column="version" type="java.lang.Long" />
<property name="name" type="java.lang.String">
<column
name="name" length="32" not-null="true"/>
</property>
<property name="description"
type="java.lang.String">
<column name="description"
length="255"/>
</property>
<set
name="products" table="products" cascade="all" inverse="true">
<!-- Hibernate只会缓存对象的简单属性的值,
要缓存集合属性,必须在集合元素中也加入<cache>子元素
而Hibernate仅仅是把与当前持久对象关联的对象的OID存放到缓存中。
如果希望把整个关联的对象的所有数据都存入缓存,
则要在相应关联的对象的映射文件中配置<cache>元素
-->
<cache usage="read-write"/>
<key column="categoryId" not-null="true"/>
<one-to-many class="org.qiujy.domain.cachedemo.Product"/>
</set>
</class>
</hibernate-mapping>
Product.hbm.xml
<?xml version="1.0"
encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"
http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd
">
<hibernate-mapping>
<class name="org.qiujy.domain.cachedemo.Product"
table="products">
<cache
usage="read-write"/>
<id name="id"
type="java.lang.Long">
<column name="id" />
<generator class="native" />
</id>
<!--
配置版本号,必须紧跟在id元素后面 -->
<version name="version" column="version"
type="java.lang.Long" />
<property name="name"
type="java.lang.String">
<column name="name" length="32"
not-null="true"/>
</property>
<property name="description" type="java.lang.String">
<column name="description" length="255"/>
</property>
<property name="unitCost"
type="java.lang.Double">
<column name="unitCost"
/>
</property>
<property
name="pubTime" type="java.util.Date">
<column name="pubTime"
not-null="true" />
</property>
<many-to-one name="category"
column="categoryId"
class="org.qiujy.domain.cachedemo.Category"
cascade="save-update"
not-null="true">
</many-to-one>
</class>
</hibernate-mapping>
2) 编辑ehcache.xml文件:
<ehcache>
<diskStore
path="c:\\ehcache\"/>
<defaultCache
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
overflowToDisk="true"
/>
<!--
设置Category类的缓存的数据过期策略 -->
<cache
name="org.qiujy.domain.cachedemo.Category"
maxElementsInMemory="100"
eternal="true"
timeToIdleSeconds="0"
timeToLiveSeconds="0"
overflowToDisk="false"
/>
<!--
设置Category类的products集合的缓存的数据过期策略 -->
<cache
name="org.qiujy.domain.cachedemo.Category.products"
maxElementsInMemory="500"
eternal="false"
timeToIdleSeconds="300"
timeToLiveSeconds="600"
overflowToDisk="true"
/>
<cache
name="org.qiujy.domain.cachedemo.Product"
maxElementsInMemory="500"
eternal="false"
timeToIdleSeconds="300"
timeToLiveSeconds="600"
overflowToDisk="true"
/>
</ehcache>
配置的元素说明:
元素或属性 描述
<diskStore> 设置缓存数据文件的存放目录
<defaultCache> 设置缓存的默认数据过期策略
<cache>
设定具体的命名缓存的数据过期策略
每个命名缓存代表一个缓存区域,每个缓存区域有各自的数据过期策略。命名缓存机制使得用户能够在每个类以及类的每个集合的粒度上设置数据过期策略。
cache元素的属性
name 设置缓存的名字,它的取值为类的全限定名或类的集合的名字
maxInMemory
设置基于内存的缓存中可存放的对象最大数目
eternal
设置对象是否为永久的,true表示永不过期,此时将忽略timeToIdleSeconds和timeToLiveSeconds属性;
默认值是false
timeToIdleSeconds
设置对象空闲最长时间,超过这个时间,对象过期。当对象过期时,EHCache会把它从缓存中清除。
如果此值为0,表示对象可以无限期地处于空闲状态。
timeToLiveSeconds 设置对象生存最长时间,超过这个时间,对象过期。
如果此值为0,表示对象可以无限期地存在于缓存中。
overflowToDisk 设置基于内在的缓存中的对象数目达到上限后,是否把溢出的对象写到基于硬盘的缓存中
分享到:
相关推荐
传播智客,为Spring集成的Hibernate配置二级缓存、cache.xml
为Spring集成的Hibernate配置二级缓存
主要讲解hibernate缓存的配置和和使用方法,以及一级缓存和二级缓存的定义和区别,和查询缓存的使用
文档中说明了Hibernate二级缓存的事务范围、进程范围、集群范围的缓存配置。主要针对进程范围EhCacheProvider进行讲解,及查询缓存的讲解。
学习hibernate的必备,提供一个简易的流程图,方便记忆和查找
基于springboot最新版本2.1.4.RELEASE,采用jpa为dao层框架,配置redis(redisson)为hibernate的二级缓存。
NULL 博文链接:https://364232252.iteye.com/blog/2369161
此配置和包,是springMVC4.3.3 +spring4+hibernate5.1.3+二级缓存ehcache(不用可以关闭)+fastjson。 是正常运行的项目里拷出来的,方便大家使用。
本人在做项目时用到了Hibernate的二级缓存,使用的是EhCache,结合本人自己的理解总结了如何在java web项目中配合Hibernate使用二级缓存,以提高程序的性能,附带需要的文件,参考的文件,和测试类以及说明。
hibernate5.1二级缓存包
Hibernate二级缓存 在一个数据库系统中,如果缓存设置的合适,那么可以极大的提高系统的效率,Hibernate作为一个ORM工具 提供了缓存的机制,包括一级(Session级)缓存和二级(SessionFactory级)缓存。这里主要...
-- 查询的二级缓存配置 --> <property name="hibernate.cache.use_query_cache">true <property name="cache.provider_class">org.hibernate.cache.EhCacheProvider 4.0配置如下: <property name="hibernate...
Hibernate中提供了两级Cache,第一级别的缓存是Session级别的缓存,它是属于事务范围的缓存。这一级别的缓存由hibernate管理的,一般情况下无需进行... Hibernate还为查询结果提供了一个查询缓存,它依赖于第二级缓存
hibernate4配置ehcache二级缓存,以及相关的jar都在源码中。
Hibernate二级缓存架包及相应配置文件
Hibernate EhCache 二级缓存配置
一对一映射 hibernate优化配置一级二级缓存步骤 有图有真相
Hibernate允许在类和集合的粒度上设置第二级缓存。在映射文件中,和元素都有一个子元素,这个子元素用来配置二级缓存。 示例:以category(产品类别)和product(产品)的映射为例: 1) 修改要配置缓存的那个持久化类的...