- 浏览: 2216202 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (1240)
- mac/IOS (287)
- flutter (1)
- J2EE (115)
- android基础知识 (582)
- android中级知识 (55)
- android组件(Widget)开发 (18)
- android 错误 (21)
- javascript (18)
- linux (70)
- 树莓派 (18)
- gwt/gxt (1)
- 工具(IDE)/包(jar) (18)
- web前端 (17)
- java 算法 (8)
- 其它 (5)
- chrome (7)
- 数据库 (8)
- 经济/金融 (0)
- english (2)
- HTML5 (7)
- 网络安全 (14)
- 设计欣赏/设计窗 (8)
- 汇编/C (8)
- 工具类 (4)
- 游戏 (5)
- 开发频道 (5)
- Android OpenGL (1)
- 科学 (4)
- 运维 (0)
- 好东西 (6)
- 美食 (1)
最新评论
-
liangzai_cool:
请教一下,文中,shell、C、Python三种方式控制led ...
树莓派 - MAX7219 -
jiazimo:
...
Kafka源码分析-序列5 -Producer -RecordAccumulator队列分析 -
hp321:
Windows该命令是不是需要安装什么软件才可以?我试过不行( ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
hp321:
Chenzh_758 写道其实直接用一下代码就可以解决了:JP ...
ImageIO读jpg的时候出现javax.imageio.IIOException: Unsupported Image Type -
huanghonhpeng:
大哥你真强什么都会,研究研究。。。。小弟在这里学到了很多知识。 ...
android 浏览器
一、 Mybatis+Ehcache配置
为了提高MyBatis的性能,有时候我们需要加入缓存支持,目前用的比较多的缓存莫过于ehcache缓存了,ehcache性能强大,而且位各种应用都提供了解决方案,在此我们主要是做查询缓存,提高查询的效率.
整合MyBatis和ehcache需要的jar包如下:
资源已上传到百度网盘点击此处下载,其中包括了一些mybatis的jar包,log4j,mysql驱动等必须的包
将上述包加入项目之后,新建一个文件名,该文件名必须为ehcache.xml,放在类路径下面,内容如下:
该文件是ehcache的配置文件,上面的注释已经说得很清楚了,这里我用的是默认的配置
至此ehcache已经配置好了,然后只需要在你想要缓存的mapper配置文件里面加入以下内容,该查询语句得到的结果将会被缓存
这样就对这个mapper里面的各种结果进行了缓存。程序中不需要修改任何地方。
这个过程不复杂,也没什么难度,不过Mybatis的官方说的也太含糊了。附件下面有,需要的各种jar包已经包含。点击下载附件。
原文地址:http://qiuqiu0034.iteye.com/blog/1162952
二、 springMVC+mybatis+ehcache详细配置
首先需要先需要两个主要的jar包
ehcache-core一定要1.3以上的版本 因为1.3之前好像不支持集群的。然后需要创建一个ehcache.xml在类路径下面
上面的diskStor path 你可以指定某一个路径下,java.io.tmpdir 指的是你系统的缓存目录,可以百度下然后一般这个xml都需要有一个defaultCache,就是默认的cache配置 里面有哪些参数自己可以网上查查api
然后下面我还配置了一个testCache,我找网上资料 没看到哪里明说,然后我自己测试,发现ehcache是可以生成多个cache的,每个cache可以根据不同的业务场景作用于不同的业务(即里面的参数配置不同),所以这样看似多配置了,其实是更加增加了灵活性。
然后在spring的配置文件里面加上一段配置:
这样就可以把ehcache和spring整合起来了
然后在对应的mapper.xml 里面加上
后面的参数配置不加也可以,都会有一个默认值,大家也可以查查一共有哪些配置,然后根据自己的需要来配置,然后这个配置是会带上cache执行的日志,如果不要带日志可以把LogginEhcache改成EhcacheCache。
在mapper.xml这样设置了默认是全部操作都会执行缓存策略,如果有某些sql不需要执行,可以把useCache设置为false。
其实经过这样的配置ehcache已经基本OK了。接下来就测试一下。
原文测试代码如下:
这里面有4条输出语句
首先是查询一次某表 执行了查询sql
然后给某表插入一条信息 执行了插入sql
然后再查询某表 执行了查询sql,这是正确的 因为你执行了非查询语句,这个时候需要重新访问数据库
然后再一次查询某表 没有执行查询sql 这代表缓存是有用的,他就没有访问数据库了,直接从内存或者磁盘里面获取了
也可以根据count来查看操作的时间
count :681719
————————————————-com.anenjoy.manage.mapper.TblUserTempMapper.insert
insert into TBLUSERTEMP (ACTIVECODE, PASSWORDMD5, PASSWORDRANDOMKEY,
PHONE, EMAIL, USERNAME,
AWARTAR, STATUS, CREATEDATE,
USERID, IMSI, CHECKCODE
)
values (?, ?, ?,
?, ?, ?,
?, ?, ?,
?, ?, ?
)
count :129557388
————————————————-com.anenjoy.manage.mapper.TblUserTempMapper.selectByExample
select
ACTIVECODE, PASSWORDMD5, PASSWORDRANDOMKEY, PHONE, EMAIL, USERNAME, AWARTAR, STATUS,
CREATEDATE, USERID, IMSI, CHECKCODE
from TBLUSERTEMP
count :333938203
count :560704
然后这些基本上OK了
原文地址:http://www.darrenzhong.com/?p=73#codesyntax_6
源码下载:http://pan.baidu.com/s/1jGnATds 解压密码:Darren中博客
总结:以上两种方式我都有试过,也测试过两种方式的效率。在此发表一下个人观点,如有其他观点欢迎大家讨论。
最后附上我的demo源码:源码下载
源码里加了数据库的sql文件 直接导入即可,之前还试了mybatis数据库的读写分离。但是他们都是独立存在的,并不会互相影响。
为了提高MyBatis的性能,有时候我们需要加入缓存支持,目前用的比较多的缓存莫过于ehcache缓存了,ehcache性能强大,而且位各种应用都提供了解决方案,在此我们主要是做查询缓存,提高查询的效率.
整合MyBatis和ehcache需要的jar包如下:
- ehcache-core-2.4.4.jar
- mybatis-ehcache-1.0.0.jar
- slf4j-api-1.6.1.jar
- slf4j-log4j12-1.6.2.jar
资源已上传到百度网盘点击此处下载,其中包括了一些mybatis的jar包,log4j,mysql驱动等必须的包
将上述包加入项目之后,新建一个文件名,该文件名必须为ehcache.xml,放在类路径下面,内容如下:
<?xml version="1.0" encoding="UTF-8"?> <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../bin/ehcache.xsd"> <diskStore path="java.io.tmpdir"/> <!-- 缓存位置可以是自定义的硬盘地址也可以是JVM默认使用的缓存地址--> <!--<diskStore path="d:\cache"/> --> <defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="30" timeToLiveSeconds="30" overflowToDisk="true"/> <!-- 配置自定义缓存 name:Cache的唯一标识 maxElementsInMemory:缓存中允许创建的最大对象数 maxElementsOnDisk:磁盘中最大缓存对象数,若是0表示无穷大 eternal:Element是否永久有效,一但设置了,timeout将不起作用,对象永不过期。 timeToIdleSeconds:缓存数据的钝化时间,也就是在一个元素消亡之前, 两次访问时间的最大时间间隔值,这只能在元素不是永久驻留时有效, 如果该值是 0 就意味着元素可以停顿无穷长的时间。 timeToLiveSeconds:缓存数据的生存时间,也就是一个元素从构建到消亡的最大时间间隔值, 这只能在元素不是永久驻留时有效,如果该值是0就意味着元素可以停顿无穷长的时间。 overflowToDisk:内存不足时,是否启用磁盘缓存。 diskPersistent:是否缓存虚拟机重启期数据 diskExpiryThreadIntervalSeconds:磁盘失效线程运行时间间隔,默认是120秒 diskSpoolBufferSizeMB:这个参数设置DiskStore(磁盘缓存)的缓存区大小。默认是30MB。每个Cache都应该有自己的一个缓冲区 memoryStoreEvictionPolicy:缓存满了之后的淘汰算法。默认策略是LRU(最近最少使用)。你可以设置为FIFO(先进先出)或是LFU(较少使用) <cache name="SimplePageCachingFilter" maxElementsInMemory="10000" eternal="false" overflowToDisk="false" timeToIdleSeconds="900" timeToLiveSeconds="1800" memoryStoreEvictionPolicy="LFU" /> --> </ehcache>
该文件是ehcache的配置文件,上面的注释已经说得很清楚了,这里我用的是默认的配置
至此ehcache已经配置好了,然后只需要在你想要缓存的mapper配置文件里面加入以下内容,该查询语句得到的结果将会被缓存
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.qiuqiu.dao.PersonDao"> <!-- 以下两个<cache>标签二选一,第一个可以输出日志,第二个不输出日志 只要在对应的mapper配置文件中加入<cache />标签即可--> <cache type="org.mybatis.caches.ehcache.LoggingEhcache"/> <!-- <cache type="org.mybatis.caches.ehcache.EhcacheCache"/> --> <select id="selectUserById" parameterType="int" resultType="org.qiuqiu.vo.Person"> select * from person where id=#{id} </select> </mapper>
这样就对这个mapper里面的各种结果进行了缓存。程序中不需要修改任何地方。
这个过程不复杂,也没什么难度,不过Mybatis的官方说的也太含糊了。附件下面有,需要的各种jar包已经包含。点击下载附件。
原文地址:http://qiuqiu0034.iteye.com/blog/1162952
二、 springMVC+mybatis+ehcache详细配置
首先需要先需要两个主要的jar包
- ehcache-core-2.4.6.jar
- mybatis-ehcache-1.0.1.jar
ehcache-core一定要1.3以上的版本 因为1.3之前好像不支持集群的。然后需要创建一个ehcache.xml在类路径下面
<?xml version="1.0" encoding="utf-8"?> <ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ehcache.xsd"> <diskStore path="java.io.tmpdir"/> <defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="30" timeToLiveSeconds="30" overflowToDisk="false"/> <!-- 配置自定义缓存 maxElementsInMemory:缓存中允许创建的最大对象数 eternal:缓存中对象是否为永久的,如果是,超时设置将被忽略,对象从不过期。 timeToIdleSeconds:缓存数据的钝化时间,也就是在一个元素消亡之前, 两次访问时间的最大时间间隔值,这只能在元素不是永久驻留时有效, 如果该值是 0 就意味着元素可以停顿无穷长的时间。 timeToLiveSeconds:缓存数据的生存时间,也就是一个元素从构建到消亡的最大时间间隔值, 这只能在元素不是永久驻留时有效,如果该值是0就意味着元素可以停顿无穷长的时间。 overflowToDisk:内存不足时,是否启用磁盘缓存。 memoryStoreEvictionPolicy:缓存满了之后的淘汰算法。 --> <cache name="testCache" maxElementsInMemory="10000" eternal="true" overflowToDisk="false" timeToIdleSeconds="0" timeToLiveSeconds="600" memoryStoreEvictionPolicy="LFU" /> </ehcache>
上面的diskStor path 你可以指定某一个路径下,java.io.tmpdir 指的是你系统的缓存目录,可以百度下然后一般这个xml都需要有一个defaultCache,就是默认的cache配置 里面有哪些参数自己可以网上查查api
然后下面我还配置了一个testCache,我找网上资料 没看到哪里明说,然后我自己测试,发现ehcache是可以生成多个cache的,每个cache可以根据不同的业务场景作用于不同的业务(即里面的参数配置不同),所以这样看似多配置了,其实是更加增加了灵活性。
然后在spring的配置文件里面加上一段配置:
<!-- 使用ehcache缓存 --> <bean id="ehCacheManager" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"> <property name="configLocation" value="classpath:ehcache.xml" /> </bean>
这样就可以把ehcache和spring整合起来了
然后在对应的mapper.xml 里面加上
<cache type="org.mybatis.caches.ehcache.LoggingEhcache" > <property name="timeToIdleSeconds" value="3600"/><!--1 hour--> <property name="timeToLiveSeconds" value="3600"/><!--1 hour--> <property name="maxEntriesLocalHeap" value="1000"/> <property name="maxEntriesLocalDisk" value="10000000"/> <property name="memoryStoreEvictionPolicy" value="LRU"/> </cache>
后面的参数配置不加也可以,都会有一个默认值,大家也可以查查一共有哪些配置,然后根据自己的需要来配置,然后这个配置是会带上cache执行的日志,如果不要带日志可以把LogginEhcache改成EhcacheCache。
在mapper.xml这样设置了默认是全部操作都会执行缓存策略,如果有某些sql不需要执行,可以把useCache设置为false。
<select id="selectByExample" resultMap="BaseResultMap" parameterType="com.anenjoy.manage.entity.TblUserTempExample" useCache="false" >
其实经过这样的配置ehcache已经基本OK了。接下来就测试一下。
原文测试代码如下:
long begin = System.nanoTime(); tempService.selectAll(); long end = System.nanoTime() - begin; System.out.println("count :" + end); // the second time begin = System.nanoTime(); try { tempService.insertTblUserTemp("1", "1", "1", "1"); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } end = System.nanoTime() - begin; System.out.println("count :" + end); // the second time begin = System.nanoTime(); tempService.selectAll(); end = System.nanoTime() - begin; System.out.println("count :" + end); // the third time begin = System.nanoTime(); tempService.selectAll(); end = System.nanoTime() - begin; System.out.println("count :" + end); return "";
这里面有4条输出语句
首先是查询一次某表 执行了查询sql
然后给某表插入一条信息 执行了插入sql
然后再查询某表 执行了查询sql,这是正确的 因为你执行了非查询语句,这个时候需要重新访问数据库
然后再一次查询某表 没有执行查询sql 这代表缓存是有用的,他就没有访问数据库了,直接从内存或者磁盘里面获取了
也可以根据count来查看操作的时间
count :681719
————————————————-com.anenjoy.manage.mapper.TblUserTempMapper.insert
insert into TBLUSERTEMP (ACTIVECODE, PASSWORDMD5, PASSWORDRANDOMKEY,
PHONE, EMAIL, USERNAME,
AWARTAR, STATUS, CREATEDATE,
USERID, IMSI, CHECKCODE
)
values (?, ?, ?,
?, ?, ?,
?, ?, ?,
?, ?, ?
)
count :129557388
————————————————-com.anenjoy.manage.mapper.TblUserTempMapper.selectByExample
select
ACTIVECODE, PASSWORDMD5, PASSWORDRANDOMKEY, PHONE, EMAIL, USERNAME, AWARTAR, STATUS,
CREATEDATE, USERID, IMSI, CHECKCODE
from TBLUSERTEMP
count :333938203
count :560704
然后这些基本上OK了
原文地址:http://www.darrenzhong.com/?p=73#codesyntax_6
源码下载:http://pan.baidu.com/s/1jGnATds 解压密码:Darren中博客
总结:以上两种方式我都有试过,也测试过两种方式的效率。在此发表一下个人观点,如有其他观点欢迎大家讨论。
- 使用ehcache+mybatis的查询效率不如springMVC+mybatis+ehcache的效率高。
- ehcache.xml配置文件中的<diskStore path="java.io.tmpdir"/>节点使用系统默认缓存位置的效率比使用自定义缓存位置 path="d:\cache"的效率要高。
最后附上我的demo源码:源码下载
源码里加了数据库的sql文件 直接导入即可,之前还试了mybatis数据库的读写分离。但是他们都是独立存在的,并不会互相影响。
发表评论
-
小程序textarea完美填坑
2020-07-07 16:09 546相信做微信小程序的码友们都被textarea这个原生组件坑过 ... -
Nginx+Https自己敲命令生成证书
2020-05-18 09:35 968一、准备 环境:centos6.8 ... -
https证书生成环境搭建配置(基于Tomcat和Nginx)
2020-04-24 11:06 839一、基于Tomcat、JDK内置密钥工具: 1、生成服务端证 ... -
史上最强Tomcat8性能优化
2019-11-01 21:41 926授人以鱼不如授人以渔 ... -
SpringBoot配置HTTPS,并实现HTTP访问自动转HTTPS访问
2019-10-07 09:13 5721.使用jdk自带的 keytools 创建证书 打开cmd ... -
Spring Boot工程集成全局唯一ID生成器 UidGenerator
2019-09-16 09:04 878概述 流水号生成器(全局唯一 ID生成器)是服务化系统的基础 ... -
CentOS7下Redis的安装与使用
2019-08-17 11:45 627一、手动安装过程 1、准备工作(安装gcc依赖) yum ... -
Nginx与tomcat组合的简单使用
2019-08-17 10:05 469配置tomcat跳转 请求http出现400的时候在这里配置 ... -
linux下lvs+keepalived安装配置
2019-07-10 14:20 477keepalived主机:192.168.174. ... -
使用Docker搭建Tomcat运行环境
2019-02-08 21:32 5051 准备宿主系统 准备一 ... -
Netty笔记-GlobalEventExecutor
2019-02-06 23:00 6711.概念 /** * Single-thread si ... -
Netty4转发服务的实现方案
2019-02-06 15:03 1168如果用Netty做转发服务(不需要同步应答),Netty中有一 ... -
java手机号归属地查询
2018-12-25 17:16 768所需的包:carrier-1.75.jar 、geocoder ... -
基于Netty4的HttpServer和HttpClient的简单实现
2018-10-17 20:02 714Http 消息格式: Http request: Met ... -
javafx : 支持使用微调(spinner)控制的数字的文本框(NemberTextField)
2018-10-16 00:00 1118最近花了一些时间学习javaFX, 要更深入地理解新GUI包, ... -
我的Java(定制你的Java/JavaFX Runtime)
2018-10-12 23:29 695最新的JDK 11发布了,撒花 新版本的JDK终于有了ope ... -
javaFX的几个新特性,让swing彻底过时
2018-10-12 22:42 683首先声明,Java的GUI曾经 ... -
mac os系统用install4j把jar包生成app
2018-10-05 23:02 1456install4j有windows版也有mac版 mac电脑 ... -
JavaFX Alert对话框
2018-10-05 22:01 24141. 标准对话框 消息对话框 Alert alert = ... -
IDEA Properties中文unicode转码问题
2017-02-17 19:54 1081摘要: 如何让IDEA的properties中的中文进行uni ...
相关推荐
本后台管理系统,采用流行的框架springMvc+spring+mybatis+shiro+redis+ehcache开发,实现了权限管理(菜单权限、数据权限),solr全文搜索引擎,activiti工作流程引擎,cas单点登陆等功能,完善的代码生成器 后期还...
此项目为springmvc、Mybatis、EHcache、maven、Spring security3、activiti5工作流的整合 是一个基于数据库的权限管理demo项目、使用mysql数据库 项目运行前需要构建maven私服 而且有些jar包私服中肯定没有,需要...
SpringMVC MyBatis 模板引擎beetl 前端bootstrap 数据源druid 缓存ehcache MyBatis分页插件PageHelper MyBatis通用Mapper 源码完整+带sql脚本+亲测可以用,而且功能很强大,是一个完善的框架实例。
整合EhCache,对Mybatis的二级缓存进行管理和对spring进行缓存管理 整合FastJson对指定http类型的数据进行转换 整合hibernate.validator校验器对controller接口参数进行校验 使用了springmvc统一异常处理 使用了...
### 分布式框架简介SSM组合+springmvc+mybatis+shiro+restful+bootstrap #### 一、基础知识与入门 本节主要介绍如何基于SSM(Spring、SpringMVC、MyBatis)框架搭建一个简单的Web应用程序,并实现一个HelloWorld...
SpringMVC、MyBatis和Ehcache的整合提供了一种优秀的解决方案,这三种技术分别处理了不同的层面:SpringMVC作为MVC框架负责控制层,MyBatis作为持久层框架简化了数据库操作,而Ehcache则作为缓存系统提高了数据访问...
springMVC+MyBatis+Ehcache项目整合 里面有几个调用的例子 还解决一般行整合出现 MyBatis事物无法回滚问题 Ehcache 以注解的方式进行整合 项目架构一般 不喜欢别骂我 没打算收你们的积分 不要问我叫什么 大家都叫我...
前端UI采用INSPINA实现,后台采用 SpringMVC + MyBatis + BootStrap + Apache Shiro + Ehcache 开发组件 的基础架构,采用面向声明的开发模式, 基于泛型编写极少代码即可实现复杂的数据展示、数据编辑、表单处理等...
校友录网站。基于javaWeb,由Maven构建管理,采用Spring+SpringMVC+MyBatis框架,用EhCache做数据缓存。门户网站采用BootStrap设计界面,后台管理网站用AmazeUI设计界面。.zip
该系统在技术上使用Spring+SpringMVC+MyBatis整合框架作为后台开发框架,AmazeUI作为前端开发框架。 并使用Ehcache作为项目的缓存,druid作为项目的数据库连接池,使用FreeMarker实现word的导出,使用Shiro完成项目...
积分最低,Spring MVC+Mybatis+Ehcache+Apache Shiro+Bootstrap整合开发java仓库管理系统源码 开发环境:Eclipse ,JDK 1.8 ,Tomcat7 技术选型 后端技术 SpringMVC MVC框架 Spring Framework 容器 Apache ...
在本项目"SpringMvc+Mybatis+缓存+easyui小demo"中,开发者通过集成SpringMVC、Mybatis、EasyUI以及缓存技术,创建了一个小型的Web应用程序示例。这个项目旨在帮助初学者理解这些关键技术的整合与应用,同时也提供了...
SpringMVC、Mybatis、Spring、Shiro和Ehcache这五个技术组件是Java Web开发中的关键工具,它们各自承担着不同的职责,并通过整合来实现强大的功能。下面将详细阐述这些技术以及它们在整合中的作用。 首先,...
本次上传的资源是spring+springMVC+mybatis整合的简单增删查改,有助于初学者在idea软件上操作,其中用到的数据库是mysql,资源里面还整合了spring的ehcache二级缓存。
该系统在技术上使用Spring+SpringMVC+MyBatis整合框架作为后台开发框架,AmazeUI作为前端开发框架。 并使用Ehcache作为项目的缓存,druid作为项目的数据库连接池,使用FreeMarker实现word的导出,使用Shiro完成项目...
SpringMVC、MyBatis、Shiro 和 EasyUI 是四个在Web开发中广泛使用的开源框架。这个项目结合了它们的功能,构建了一个强大的后端服务和前端界面系统。 **SpringMVC** 是Spring框架的一部分,是一个模型-视图-控制器...
前端UI采用INSPINA实现,后台采用 SpringMVC + MyBatis + BootStrap + Apache Shiro + Ehcache 开发组件 的基础架构,采用面向声明的开发模式, 基于泛型编写极少代码即可实现复杂的数据展示、数据编辑、表单处理等...
Spring MVC、MyBatis、Ehcache和ExtJS这四个技术组件都是开发者们在构建此类应用时常常使用的工具。让我们详细了解一下这些技术以及它们如何协同工作。 首先,Spring MVC是Spring框架的一个模块,专门用于构建Web...
# SSM-WMS基于SSM(Spring+SpringMVC+MyBatis)框架开发的仓库管理系统 开发中 数据库 Mysql <br>后端 Spring SpringMVC MyBatis Slf4j Log4j Shiro Ehcache Fastjson <br>...
例如,SpringMVC可以自动管理MyBatis的SqlSession,而EhCache的缓存策略可以通过Spring的配置来实现。同时,FreeMarker和Sitemesh的配置也会集成到SpringMVC中,以便在处理请求时能够正确地渲染和装饰页面。 总的来...