EhCache配置Hibernate二级缓存
来源:互联网 发布:qq飞车飞舰数据 编辑:程序博客网 时间:2024/05/17 02:59
使用EhCache配置Hibernate二级缓存:
配置Hibernatee二级缓存准备:
1)把ehcache-1.2.3.jar加入到当前应用的classpath中。
2)在hibernate.cfg.xml文件中加入EhCache缓存插件的提供类。
- <property name="hibernate.cache.provider_class">
- org.hibernate.cache.EhCacheProvider
- </property>
3)挎贝ehcache.xml文件到类路径(项目工程的src目录下),这个文件在Hibernate安装目录的etc下。
- <?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">
- <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>
<
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>
编辑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>
在Spring托管的Hibernate二级缓存
1.在spring的配置文件中,hibernate部分加入 xml 代码 org.hibernate.cache.EhCacheProvider true
2.为HBM表设置cache策略 xml 代码
3.在DAO中,调用find方法查询之前,设置使用缓存 Java代码 getHibernateTemplate().setCacheQueries(true);
补充: 如果不设置“查询缓存”,那么Hibernate只会缓存使用load()方法获得的单个持久化对象,如果想缓存使用findall()、list()、Iterator()、createCriteria()、createQuery()等方法获得的数据结果集的话,就需要设置 hibernate.cache.use_query_cache true 才行。
- Hibernate+ehcache二级缓存配置
- Hibernate ehcache配置二级缓存
- Hibernate配置Ehcache二级缓存
- EhCache配置Hibernate二级缓存
- Hibernate+EhCache配置二级缓存
- Hibernate ehcache配置二级缓存
- Hibernate+EhCache配置二级缓存
- Hibernate+EHCache配置二级缓存
- hibernate二级缓存 Ehcache配置详解
- hibernate二级缓存 Ehcache配置详解
- Hibernate EhCache 二级缓存配置.pdf
- Hibernate 使用ehcache配置二级缓存
- Spring+Hibernate下配置Hibernate二级缓存EhCache
- Hibernate之Hibernate+EHCache配置二级缓存实战
- Spring+Hibernate下配置Hibernate二级缓存EhCache
- Hibernate中ehcache二级缓存配置方法
- Hibernate ehcache配置二级缓存及说明
- Hibernate JPA 中配置Ehcache二级缓存
- 用户态和内核态的概念区别
- 上传了几个资源供大家分享
- Linux Platform Device and Driver
- jqGrid-JsonBaseAction
- Hadoop相关知识
- EhCache配置Hibernate二级缓存
- 功率对照表(dBm-mW)
- Pathchirp—有效的带宽估计方法(二)
- js 全选 反选 导出全部
- 经典SQL语句大全
- 【Linux】Linux设置程序开机自启动
- Linq 分组,求和,多个字段排序,取前10条
- HDU 2844
- Value = undefined