配置Hibernate二级缓存
首先找到配置EHCahe二级缓存需要添加的jar包
hibernate-release-4.1.9.Final→lib→optional→ehcache→下的ehcache-core-2.4.3.jar和hibernate-ehcache-4.1.9.Final.jar还有slf4j-api-1.6.1.jar!
然后再从hibernate-release-4.1.9.Final→project→etc→把ehcache.xml复制到src目录下.把缓存.xml没用的都删了,留下最终:
<ehcache>
<!-- 缓存路径 -->
<diskStore path="E:\SecondCache"/> //自己配置
<defaultCache
maxElementsInMemory="10000"
eternal="false"
timeToIdleSeconds="120"
timeToLiveSeconds="120"
overflowToDisk="true"
/>
</ehcache>
再在hibernate.cfg.xml里开启和配置缓存:
<!-- 开启二级缓存 -->
<property name="hibernate.cache.use_second_level_cache">true</property>
<!-- 高速缓存提供程序 -->
<property name="hibernate.cache.region.factory_class">
org.hibernate.cache.ehcache.EhCacheRegionFactory
</property>
最后在实体类的xml文件里设置缓存: <cache usage="read-write"/>
如:
<hibernate-mapping>
<class name="cn.jnit.bean.User" table="T_user">
<cache usage="read-write"/>
<id name="id">
<generator class="sequence">
</generator>
</id>
<property name="pwd"></property>
<property name="name"></property>
<one-to-one name="ud" class="cn.jnit.bean.UserDetail" cascade="all" ></one-to-one>
</class>
</hibernate-mapping>
如果查询的是集合的话:也需要在<SET>里设置:
<hibernate-mapping>
<class name="cn.jbit.bean.Dept" table="DEPT">
<cache usage="read-write" />
<id name="deptno">
<generator class="sequence"></generator>
</id>
<property name="dname"></property>
<property name="loc"></property>
<set name="emps" cascade="save-update" inverse="true" order-by="empno desc"
lazy="false">
<cache usage="read-only" />
<key column="deptno"></key>
<one-to-many class="cn.jbit.bean.Emp" />
</set>
</class>
</hibernate-mapping>.
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
如果配置文件里没有<SET>,不必设置,QUERY的查询语句优化的话,需要开启查询缓存→<!-- 开启查询缓存 -->
<property name="hibernate.cache.query_cache_factory">true</property>
下面是我一对一关系里测试的数据,切记:
不 是 Iterator<User> iterator=ses.createQuery(hql).setCacheable(true). list().iterator();
Iterator<User> iterator=ses.createQuery(hql).setCacheable(true).iterate();
Session ses=HibernateSessionFactory.getSession();
String hql="from User";
List<User> list = ses.createQuery(hql).setCacheable(true).list();
System.out.println(list.size());
HibernateSessionFactory.closeSession();
ses=HibernateSessionFactory.getSession();
Iterator<User> iterator = ses.createQuery(hql).setCacheable(true).iterate();
while (iterator.hasNext()) {
User user = (User) iterator.next();
System.out.println(user.getId());
}
ses.close();
配置Hibernate二级缓存的更多相关文章
- 配置Hibernate二级缓存时,不能初始化RegionFactory的解决办法
配置Hibernate 二级缓存时,出现以下bug提示: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder&quo ...
- 配置Hibernate二级缓存步骤
配置Hibernate二级缓存步骤: 加入二级缓存的jar包及配置文件 jar包位置:hibernate-release-4.1.8.Final\lib\optional\ehcache下所有jar包 ...
- Hibernate学习11——配置Hibernate二级缓存
一.缓存的概念: 以空间换时间: 二.Hibernate缓存的分类: 前面我们讲的缓存都是session缓存:也叫一级缓存:get,load等缓存都是内置的,一级缓存: SessionFactor ...
- Hibernate ——二级缓存
一.Hibernate 二级缓存 1.Hibernate 二级缓存是 SessionFactory 级别的缓存. 2.二级缓存分为两类: (1)Hibernate内置二级缓存 (2)外置缓存,可配置的 ...
- hibernate二级缓存demo2
@Test public void hello3(){ Session session=sessionFactory.openSession(); List list = session.create ...
- Hibernate二级缓存简述及基于Spring4,Hibernate5,Ehcache3的二级缓存配置
Hibernate L2缓存 缓存的分类 L2缓存工作原理 放入二级缓存的数据 Ehcache 依赖 ehcache.xml 常用的memoryStoreEvictionPolicy(缓存算法) eh ...
- ssh整合hibernate 使用spring管理hibernate二级缓存,配置hibernate4.0以上二级缓存
ssh整合hibernate 使用spring管理hibernate二级缓存,配置hibernate4.0以上二级缓存 hibernate : Hibernate是一个持久层框架,经常访问物理数据库 ...
- hibernate二级缓存ehcache hibernate配置详解
<!-----------------hibernate二级缓存ehcache------------------------->hibernate配置 <prop key=&quo ...
- hibernate二级缓存ehcache
与Session相对的是,SessionFactory也提供了相应的缓存机制.SessionFactory缓存可以依据功能和目的的不同而划分为内置缓存和外置缓存. SessionFactory的内置缓 ...
随机推荐
- BZOJ2844: albus就是要第一个出场
Description 已知一个长度为n的正整数序列A(下标从1开始), 令 S = { x | 1 <= x <= n }, S 的幂集2^S定义为S 所有子集构成的集合. 定义映射 f ...
- LightOJ 1245 数学题,找规律
1.LightOJ 1245 Harmonic Number (II) 数学题 2.总结:看了题解,很严谨,但又确实恶心的题 题意:求n/1+n/2+....+n/n,n<=2^31. ...
- 从一个QQ群友那儿偷来的js图形 ^_^
<script type="text/javascript"> var head=document.createElement("HEAD"); d ...
- SQL 联合索引 与 单一列的索引 比较
背景: 公司业务迅速扩展,很多网站.接口都因为大流量的数据,发生服务器习惯性死机:一条sql查询语句只能适用于一定的网络环境,没有优化的查询当遇上大数据时就不适用了. 本文主旨: 讨论什么情况下能利用 ...
- html中a标签做容器的问题
今天试验了一下a标签当作容器的问题,若a包含的容器中没有a标签的话,a标签是可以被当作成容器使用的,在谷歌浏览器这种浏览器中是可行的,但是在低版本的IE中会有bug出现,就是浏览器在解析的时候会把a标 ...
- java 与c#比较
1.开发周期方面:c#比java开发周期更快2.java出现的时间更长.开源性广.跨平台性好3.c#较为封闭.后出于java4.c#有无符号类型.java没有5.java与c#都有值类型.但是java ...
- Layer弹窗组件
layer是一款近年来备受青睐的web弹层组件,她具备全方位的解决方案,致力于服务各水平段的开发人员,您的页面会轻松地拥有丰富友好的操作体验. Layer的开发手册和下载地址 http://layer ...
- Android课程---手机尺寸相关的概念 +尺寸单位+关于颜色
手机的尺寸: 屏幕对角线的长度,单位为英寸(2.54cm) 手机的分辨率: 屏幕能显示的像素的数量, 一般用在长方向上数量*宽方向上数量来表达 手机的像素密度: pixels per inch,也称P ...
- 图解Java内存回收机制
在Java中,它的内存管理包括两方面:内存分配(创建Java对象的时候)和内存回收,这两方面工作都是由JVM自动完成的,降低了Java程序员的学习难度,避免了像C/C++直接操作内存的危险.但是,也正 ...
- Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC
Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC 博客分类: Java/Security Javabase64macmd5sha 加密解密,曾经是我一 ...