mybatis0210 mybatis和ehcache缓存框架整合

1.1mybatis和ehcache缓存框架整合
一般不用mybatis来管理缓存而是用其他缓存框架在管理缓存,因为其他缓存框架管理缓存会更加高效,因为别人专业做缓存的而mybatis专业做sql语句的,mybatis二级缓存通过ehcache维护缓存数据。
1.1.1分布缓存
将缓存数据数据进行分布式管理。用户发起请求,首先会根据负载选择不同的服务器,如果用户在服务器1和服务器2都登录过,那么把用户的session分别放在服务器1和服务器2是不行的,所以就把用户的信息放在远程服务器集群中统一管理。如果用mybatis的缓存,那么mybatis的缓存将会是分别在服务器1和服务器2,不能实现缓存的统一管理。

1.1.1mybatis和ehcache思路
通过mybatis和ehcache框架进行整合,就可以把缓存数据的管理托管给ehcache。
在mybatis中提供了一个cache接口,只要实现cache接口就可以把缓存数据灵活的管理起来。(源码如下)

mybatis中默认实现:(源码如下)

1.1.1下载和ehcache整合的jar包

Ehcache要扩展mybatis的缓存管理就要实现cache接口:(源码如下)

1.1.1配置ehcache.xml

1.1.1整合测试
(整合:导入jar包,写ehcache.xml)在mapper.xml添加ehcache配置:
<!-- 开启二级缓存 -->
     <!-- 单位:毫秒 -->
     <cache type="org.mybatis.caches.ehcache.EhcacheCache"> <!-- 二级缓存的类型是ehcache的实现类,不写类型默认就是mybatis的缓存, -->
         <property name="timeToIdleSeconds" value="12000"/>
        <property name="timeToLiveSeconds" value="3600"/>
        <!-- 同ehcache参数maxElementsInMemory -->
        <property name="maxEntriesLocalHeap" value="1000"/>
        <!-- 同ehcache参数maxElementsOnDisk -->
        <property name="maxEntriesLocalDisk" value="10000000"/>
        <property name="memoryStoreEvictionPolicy" value="LRU"/>
     </cache>
1.2二级缓存的应用场景
对查询频率高,变化频率低的数据建议使用二级缓存。
    对于访问多的查询请求且用户对查询结果实时性要求不高,此时可采用mybatis二级缓存技术降低数据库访问量,提高访问速度,业务场景比如:耗时较高的统计分析sql、电话账单查询sql等。
    实现方法如下:通过设置刷新间隔时间,由mybatis每隔一段时间自动清空缓存,根据数据变化频率设置缓存刷新间隔flushInterval,比如设置为30分钟、60分钟、24小时等,根据需求而定。
1.3mybatis局限性
    mybatis二级缓存对细粒度的数据级别的缓存实现不好,比如如下需求:对商品信息进行缓存,由于商品信息查询访问量大,但是要求用户每次都能查询最新的商品信息,此时如果使用mybatis的二级缓存就无法实现当一个商品变化时只刷新该商品的缓存信息而不刷新其它商品的信息,因为mybaits的二级缓存区域以mapper为单位划分,当一个商品信息变化会将所有商品信息的缓存数据全部清空。解决此类问题需要在业务层根据需求对数据有针对性缓存。
时间: 2024-08-07 21:20:08

mybatis0210 mybatis和ehcache缓存框架整合的相关文章

EhCache缓存框架

EhCache介绍 EhCache是一个纯Java的进程内缓存框架. 使用EhCache缓存框架,可以首先将数据存储到缓存中,缓存数据有两级:内存和磁盘,因此无需担心容量问题.缓存数据会在虚拟机重启的过程中写入磁盘.之所以用缓存框架,主要是相对于传统数据库速度更快. EhCache在数据量不是很大的时候可以很好的发挥作用,例如数据量在十万级别的小型爬虫,可以用于判断重复url. 导入依赖 从maven远程仓库导入依赖,建议选择较为稳定的2.X版本 <dependencies> <depe

Ehcache缓存框架具体解释

一.前言 ehcache是一个比較成熟的java缓存框架.它提供了用内存,磁盘文件存储.以及分布式存储方式等多种灵活的cache管理方案.ehcache最早从hibernate发展而来. 因为3.x的版本号和2.x的版本号API差异比較大.这里直接学习最新版本号的了,可是最后整合spring的时候还是有2.x. 二.安装 因为我的项目是使用maven管理的,因此仅仅要在pom文件里加入例如以下代码就可以. <dependency> <groupId>javax.cache</

Ehcache缓存框架详解

一.前言 ehcache是一个比较成熟的java缓存框架,它提供了用内存,磁盘文件存储,以及分布式存储方式等多种灵活的cache管理方案.ehcache最早从hibernate发展而来.由于3.x的版本和2.x的版本API差异比较大.这里直接学习最新版本的了,但是最后整合spring的时候还是有2.x. 二.安装 由于我的项目是使用maven管理的,因此只要在pom文件中添加如下代码即可. <dependency> <groupId>javax.cache</groupId&

SpringMVC+mybatis+maven+Ehcache缓存实现

所谓缓存,就是将程序或系统经常要调用的对象存在内存中,以便其使用时可以快速调用,不必再去创建新的重复的实例.这样做可以减少系统开销,提高系统效率. 缓存主要可分为二大类: 一.通过文件缓存,顾名思义文件缓存是指把数据存储在磁盘上,不管你是以XML格式,序列化文件DAT格式还是其它文件格式: 二.内存缓存,也就是实现一个类中静态Map,对这个Map进行常规的增删查. 一.EhCache缓存系统简介 EhCache 是一个纯 Java 的进程内缓存框架,具有快速.精干等特点,是 Hibernate

JavaEE springmvc,mybatis,shiro,bootstrap,html5框架整合

升级报捷:通过服务于服务之间调用,生成二维码,可直接用户手机app(详细查看截图) 框架集成lucene搜索引擎,使您的信息在毫秒内抓取(详细查看截图) 1.  创建.初始化索引.统一搜索入口.搜索结果展现--内容.标题高亮.关键词搜索 2.  高级搜索:高级搜索增加多入口查询(精确查询.模糊查询.前缀查询等),每页显示条数自定义.索引结果数据设置.选择索引文档类型等 3. 通过A系统调用B系统的Rest服务,生成相关的二维码,可以直接用户手机app ----------------------

springmvc,mybatis,shiro,bootstrap,html5框架整合

升级报捷:通过服务于服务之间调用,生成二维码,可直接用户手机app(详细查看截图) 框架集成lucene搜索引擎,使您的信息在毫秒内抓取(详细查看截图) 1.  创建.初始化索引.统一搜索入口.搜索结果展现--内容.标题高亮.关键词搜索 2.  高级搜索:高级搜索增加多入口查询(精确查询.模糊查询.前缀查询等),每页显示条数自定义.索引结果数据设置.选择索引文档类型等 3. 通过A系统调用B系统的Rest服务,生成相关的二维码,可以直接用户手机app ----------------------

Ehcache缓存框架简介

EhCache 是一个纯Java的进程内缓存框架,具有快速.精干等特点,是Hibernate中默认的CacheProvider. Ehcache是一种广泛使用的开源Java分布式缓存.主要面向通用缓存,Java EE和轻量级容器.它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个gzip缓存servlet过滤器,支持REST和SOAP api等特点. Ehcache最初是由Greg Luck于2003年开始开发.2009年,该项目被Terracotta购买.软件仍然是开源,但一些

Ehcache缓存框架与 Shiro 框架 出现出现验证错误 &amp;&amp; Tomcat 缓存清除的问题

当一个项目使用久了以后就会出现各种问题,下面是我遇到的一个权限验证错误的问题 我的项目是   Ehcache 结合 Shiro  一起使用的,项目用用久了出现   Token验证错误,Cookie之类的...浏览器访问出现500 各种奇葩 我的做法是: 清除Google Chrome的 Cookie,和自动填表的功能 发现部署项目的时候,是可以部署的   而且可以打开首页 当输入账号密码,到后台验证的时候,出现错误 并且提示是Ehcache 与  Cookie之间的Token之类的错误 我想大概

【JavaWeb】Spring+SpringMVC+MyBatis+SpringSecurity+EhCache+JCaptcha 完整Web基础框架(前言)

一直希望能够搭建一个完整的,基础Web框架,方便日后接一些外快的时候,能够省时省力,终于花了一周的时间,把这个东西搞定了.特此写下此博客,一来是纪念,二来是希望能够为别人提供方便.顺带说一下,恩,组合框架的各个部分用的版本有的是最新的,有的则不是,不敢保证最新版本下,按照这个整合方式,不会报错... 简单介绍一下,本框架的基本功能点: Spring:整个框架的主体部分,这个自不用说. SpringMVC:MVC部分我还是比较喜欢Spring的. MyBatis:选型的时候选择这个ORM主要也是考