首先找到配置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. ThinkPHP随笔

    使用应用分组模式开发程序时,U函数表示地址时,要用这种格式 “项目名/控制器名/方法名”写地址,不能直接使用U("handle") 如:var handleUrl = '{:U(& ...

  2. Java_过滤字符串中非汉子的内容

    /** * 去除“第”之前的所有非汉字内容 */ private String clearNotChinese(String buff){ String tmpString =buff.replace ...

  3. window通过mstsc远程连接其它计算机

    1.Windows远程连接树莓派 1.1.Win + r 出现下面界面. 1.2.输入mstsc今日下面界面 1.3.出现警告,选“是” 1.4.输入账户密码,点“OK”

  4. AngularJS 乱记

    1. 前端简单逻辑 <title data-ng-bind="{true:' ('+notice_count+') '}[notice_count > 0]+{true:glob ...

  5. [LintCode] Copy Books 复印书籍

    Given an array A of integer with size of n( means n books and number of pages of each book) and k pe ...

  6. Linux_权限

    一.查看文件或文件夹权限 [root@hadoop09-linux etc]# ll -h /etc #ll 是ls -l 的缩写方式 -h文件大小单位k 截取其中三行说明 drwxr-xr-x. 2 ...

  7. Python一行代码

    1:Python一行代码画出爱心 print]+(y*-)**-(x**(y*<= ,)]),-,-)]) 2:终端路径切换到某文件夹下,键入: python -m SimpleHTTPServ ...

  8. Codeforces Round #196 (Div. 2)

    A 题意:O(-1) 思路:排个序搞定. B 题意:O(-1) 思路:坑了我好久,这个框框水平垂直比例固定,分两种情况即可,不能旋转,我想多了,分了四种情况. C 题意:一列n个位置,让你填m个数,当 ...

  9. MySQL数据恢复和复制对InnoDB锁机制的影响

    MySQL通过BINLOG记录执行成功的INSERT,UPDATE,DELETE等DML语句.并由此实现数据库的恢复(point-in-time)和复制(其原理与恢复类似,通过复制和执行二进制日志使一 ...

  10. centos MariaDB10.1.X galera cluster

    [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.1.12/centos6-amd64 gpgkey=https://yum.m ...