首先找到配置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二级缓存的更多相关文章

  1. 配置Hibernate二级缓存时,不能初始化RegionFactory的解决办法

    配置Hibernate 二级缓存时,出现以下bug提示: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder&quo ...

  2. 配置Hibernate二级缓存步骤

    配置Hibernate二级缓存步骤: 加入二级缓存的jar包及配置文件 jar包位置:hibernate-release-4.1.8.Final\lib\optional\ehcache下所有jar包 ...

  3. Hibernate学习11——配置Hibernate二级缓存

    一.缓存的概念: 以空间换时间:   二.Hibernate缓存的分类: 前面我们讲的缓存都是session缓存:也叫一级缓存:get,load等缓存都是内置的,一级缓存: SessionFactor ...

  4. Hibernate ——二级缓存

    一.Hibernate 二级缓存 1.Hibernate 二级缓存是 SessionFactory 级别的缓存. 2.二级缓存分为两类: (1)Hibernate内置二级缓存 (2)外置缓存,可配置的 ...

  5. hibernate二级缓存demo2

    @Test public void hello3(){ Session session=sessionFactory.openSession(); List list = session.create ...

  6. Hibernate二级缓存简述及基于Spring4,Hibernate5,Ehcache3的二级缓存配置

    Hibernate L2缓存 缓存的分类 L2缓存工作原理 放入二级缓存的数据 Ehcache 依赖 ehcache.xml 常用的memoryStoreEvictionPolicy(缓存算法) eh ...

  7. ssh整合hibernate 使用spring管理hibernate二级缓存,配置hibernate4.0以上二级缓存

    ssh整合hibernate 使用spring管理hibernate二级缓存,配置hibernate4.0以上二级缓存 hibernate  : Hibernate是一个持久层框架,经常访问物理数据库 ...

  8. hibernate二级缓存ehcache hibernate配置详解

    <!-----------------hibernate二级缓存ehcache------------------------->hibernate配置 <prop key=&quo ...

  9. hibernate二级缓存ehcache

    与Session相对的是,SessionFactory也提供了相应的缓存机制.SessionFactory缓存可以依据功能和目的的不同而划分为内置缓存和外置缓存. SessionFactory的内置缓 ...

随机推荐

  1. Nginx_HTTP 499 状态码 nginx下 499错误

    日志记录中HTTP状态码出现499错误有多种情况,我遇到的一种情况是nginx反代到一个永远打不开的后端,就这样了,日志状态记录是499.发送字节数是0. 老是有用户反映网站系统时好时坏,因为线上的产 ...

  2. POI操作Excel常用方法总结 (转)

    以下的链接为原创地址: http://blog.csdn.net/huazhangena/article/details/7587731 http://blog.csdn.net/huazhangen ...

  3. Setting start page of Windows Phone dynamically through code

    Essentially this one line of code will set the start page of the application. var navTo = new Uri(&q ...

  4. 改进iOS客户端的升级提醒功能

    改进iOS客户端的升级提醒功能 功能设计 先申明一下,我是码农,不是一个产品经理,但我觉得现有市面上的很多 App,设计的 "升级提示功能" 都不太友好.在此分享一下我的想法,欢迎 ...

  5. [CareerCup] 18.12 Largest Sum Submatrix 和最大的子矩阵

    18.12 Given an NxN matrix of positive and negative integers, write code to find the submatrix with t ...

  6. mysql查询缓存参数

    由人说mysql查询缓存是鸡肋,也许吧,但还是要看场景: 查询缓存: 开启查询缓存:/etc/my.cnfquery_cache_type=1 重启

  7. WebApp 设计要素

    从去年开始就负责公司WebApp的产品跟设计工作,最近整体大改了两个版本,也算累积了一些实际的经验.在不断学习的过程中,发现对于WebApp可以直接用于项目上的资料比较零碎,在这里总结一下,供初做 W ...

  8. 输入n个整数,输出其中最小的k个

    描述 输入n个整数,输出其中最小的k个. 详细描述: 接口说明 原型: bool GetMinK(unsignedint uiInputNum, int * pInputArray, unsigned ...

  9. Android课程---关于对话框的学习

    <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=&quo ...

  10. JS开发windows phone8.1系列之3

    http://msdn.microsoft.com/zh-cn/library/windows/apps/dn629638.aspx 这部分主要是使用页面导航 管理方式,在程序的default.htm ...