MyBatis笔记——EhCache二级缓存

转载 2018年04月17日 11:26:16

我们系统为了提高系统并发,性能、一般对系统进行分布式部署(集群部署方式) 
结构

不使用分布缓存,缓存的数据在各各服务单独存储,不方便系统开发。所以要使用分布式缓存对缓存数据进行集中管理。

mybatis无法实现分布式缓存,需要和其它分布式缓存框架进行整合。这里我主要介绍整合EhCache。下面开始实例。


实例

1.导入MyBatis-EhCache整合包

整合包

项目结构如下: 
项目结构

2.classpath下添加EhCache配置文件(ehcache.xml)

<ehcache>
    <diskStore path="F:\cache_test" />
    <defaultCache eternal="false" maxElementsInMemory="1000"
        timeToIdleSeconds="20" timeToLiveSeconds="20" overflowToDisk="true"
        maxEntriesLocalDisk="10000000"
        diskExpiryThreadIntervalSeconds="20" memoryStoreEvictionPolicy="LRU" />
</ehcache>

3.MyBatis配置文件(SqlMapConfig.xml)打开二级缓存

    <settings>
        <setting name="cacheEnabled" value="true"/>
    </settings>

4.Mapper配置文件添加cache标签

    <cache type="org.mybatis.caches.ehcache.EhcacheCache"/>

5.缓存结果继承序列化接口

public class User implements Serializable

测试

测试类如下:

package cn.pwc.test;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import cn.pwc.dao.UserMapper;
import cn.pwc.pojo.User;

public class Test {

    public static void main(String[] args) {
        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(Test.class.getClassLoader().getResourceAsStream("SqlMapConfig.xml"));
        SqlSession session = factory.openSession();
        UserMapper mapper = session.getMapper(UserMapper.class);
        User user = mapper.findById(1);
        System.out.println(user.toString());
        session.commit();
        session.close();
        SqlSession session2 = factory.openSession();
        UserMapper mapper2 = session2.getMapper(UserMapper.class);
        User user2 = mapper2.findById(1);
        System.out.println(user2.toString());
        session2.commit();
        session2.close();
    }

}

测试结果如下:

DEBUG [cn%002epwc%002edao%002e%0055ser%004dapper.data]     net.sf.ehcache.store.disk.Segment     - fault removed 0 from heap
DEBUG [cn%002epwc%002edao%002e%0055ser%004dapper.data]     net.sf.ehcache.store.disk.Segment     - fault added 0 on disk

Mybatis快速入门

-
  • 1970年01月01日 08:00

mybatis二级缓存应用及与ehcache整合

mybaits的二级缓存是mapper范围级别,除了在SqlMapConfig.xml设置二级缓存的总开关,还要在具体的mapper.xml中开启二级缓存。 1.开启mybatis的二级缓存 在核...
  • reblue520
  • reblue520
  • 2015-09-25 10:12:18
  • 3036

Spring Boot + Mybatis + 二级缓存实例(Ehcache,Redis)

使用Mybatis自带二级缓存 MyBatis 包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制。MyBatis 3 中的缓存实现的很多改进都已经实现了,使得它更加强大而且易于配置。 ...
  • xiaolyuh123
  • xiaolyuh123
  • 2017-06-27 10:45:38
  • 1452

mybatis一二级缓存详解,整合ehcache缓存,

mybatis和hibernate一样都是优秀的orm框架,但是两者的定位不同,所以有所差异,这里我们就从缓存的角度来介绍一下mybatis: 大家都知道使用mybatis就要先获取sqlsess...
  • do_bset_yourself
  • do_bset_yourself
  • 2016-04-28 15:59:44
  • 5192

【MyBatis框架】查询缓存-二级缓存-整合ehcache

mybatis整合ehcache ehcache是一个分布式缓存框架。 1.分布缓存 我们系统为了提高系统并发,性能、一般对系统进行分布式部署(集群部署方式) 如图 不使用分布缓存,缓存的数...
  • u013517797
  • u013517797
  • 2015-07-07 19:25:39
  • 3265

Spring Boot + Mybatis + Ehcache 二级缓存实例

二级缓存是多个SqlSession共享的,其作用域是mapper的同一个namespace,不同的sqlSession两次执行相同namespace下的sql语句且向sql中传递参数也相同即最终执行相...
  • xiaolyuh123
  • xiaolyuh123
  • 2017-06-29 14:49:33
  • 608

spring+mybatis+ehcache配置缓存

1:spring加载ehcache配置文件
  • u013628152
  • u013628152
  • 2016-05-18 11:29:26
  • 5043

MyBatis--查询缓存--ehcache二级缓存配置

第一步:下载ehcache的jar包 第二步:配置映射文件,将二级缓存类型改为ehcache 第三步:加入ehcache配置文件 从Jar包里复制出来: 改名为ehcache.xm...
  • sinat_27115575
  • sinat_27115575
  • 2017-04-16 11:22:12
  • 304

spring springmvc mybatis shiro 以及 ehcache(配合shiro实现缓存验证 配合spring实现二级缓存)

  • 2016年12月14日 23:10
  • 36.7MB
  • 下载

spring+Mybatis+Ehcache整合

项目用到spring+mybatis框架,弄了一上午的spring+ehcache的整合,就是不见效果,后来发现Mybatis与Ehcache整合也需要进行配置,两个都配置会大大降低数据库压力。下面把...
  • alibert
  • alibert
  • 2016-05-23 14:19:44
  • 2800
收藏助手
不良信息举报
您举报文章:MyBatis笔记——EhCache二级缓存
举报原因:
原因补充:

(最多只允许输入30个字)