当前位置: 首页 > news >正文

深圳做棋牌网站建设有哪些公司/免费引流在线推广

深圳做棋牌网站建设有哪些公司,免费引流在线推广,做网站闵行,苏州瑞熙网站建设一、MyBatis缓存介绍 正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的支持    一级缓存: 基于PerpetualCache 的 HashMap本地缓存,其存储作用域为 Session,当 Session flush 或 close 之后,该Session中的所…

一、MyBatis缓存介绍

正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的支持
  
一级缓存: 基于PerpetualCache 的 HashMap本地缓存,其存储作用域为 Session,当 Session flush 或 close 之后,该Session中的所有 Cache 就将清空。

二级缓存与一级缓存其机制相同,默认也是采用 PerpetualCache,HashMap存储,不同在于其存储作用域为 Mapper(Namespace),并且可自定义存储源,如 Ehcache。

对于缓存数据更新机制,当某一个作用域(一级缓存Session/二级缓存Namespaces)的进行了 C/U/D 操作后,默认该作用域下所有 select 中的缓存将被clear。
  
1.1、Mybatis一级缓存测试

 package me.gacl.test;import me.gacl.domain.User;import me.gacl.util.MyBatisUtil;import org.apache.ibatis.session.SqlSession;import org.junit.Test;/*** @author gacl* 测试一级缓存*/public class TestOneLevelCache {/** 一级缓存: 也就Session级的缓存(默认开启)*/@Testpublic void testCache1() {SqlSession session = MyBatisUtil.getSqlSession();String statement = "me.gacl.mapping.userMapper.getUser";User user = session.selectOne(statement, 1);System.out.println(user);/** 一级缓存默认就会被使用*/user = session.selectOne(statement, 1);System.out.println(user);session.close();/*1. 必须是同一个Session,如果session对象已经close()过了就不可能用了 */session = MyBatisUtil.getSqlSession();user = session.selectOne(statement, 1);System.out.println(user);/*2. 查询条件是一样的*/user = session.selectOne(statement, 2);System.out.println(user);/*3. 没有执行过session.clearCache()清理缓存*///session.clearCache(); user = session.selectOne(statement, 2);System.out.println(user);/*4. 没有执行过增删改的操作(这些操作都会清理缓存)*/session.update("me.gacl.mapping.userMapper.updateUser",new User(2, "user", 23));user = session.selectOne(statement, 2);System.out.println(user);}}

1.2、Mybatis二级缓存测试

  1、开启二级缓存,在userMapper.xml文件中添加如下配置

<mapper namespace="me.gacl.mapping.userMapper">
<!-- 开启二级缓存 -->
<cache/>

  2、测试二级缓存

 package me.gacl.test;import me.gacl.domain.User;import me.gacl.util.MyBatisUtil;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.junit.Test;/*** @author gacl* 测试二级缓存*/public class TestTwoLevelCache {/** 测试二级缓存* 使用两个不同的SqlSession对象去执行相同查询条件的查询,第二次查询时不会再发送SQL语句,而是直接从缓存中取出数据*/@Testpublic void testCache2() {String statement = "me.gacl.mapping.userMapper.getUser";SqlSessionFactory factory = MyBatisUtil.getSqlSessionFactory();//开启两个不同的SqlSessionSqlSession session1 = factory.openSession();SqlSession session2 = factory.openSession();//使用二级缓存时,User类必须实现一个Serializable接口===> User implements SerializableUser user = session1.selectOne(statement, 1);session1.commit();//不懂为啥,这个地方一定要提交事务之后二级缓存才会起作用System.out.println("user="+user);//由于使用的是两个不同的SqlSession对象,所以即使查询条件相同,一级缓存也不会开启使用user = session2.selectOne(statement, 1);//session2.commit();System.out.println("user2="+user);}}

1.3、二级缓存补充说明

  1. 映射语句文件中的所有select语句将会被缓存。

  2. 映射语句文件中的所有insert,update和delete语句会刷新缓存。

  3. 缓存会使用Least Recently Used(LRU,最近最少使用的)算法来收回。

  4. 缓存会根据指定的时间间隔来刷新。

  5. 缓存会存储1024个对象

cache标签常用属性:

<cache 
eviction="FIFO"  <!--回收策略为先进先出-->
flushInterval="60000" <!--自动刷新时间60s-->
size="512" <!--最多缓存512个引用对象-->
readOnly="true"/> <!--只读-->
http://www.lbrq.cn/news/1330219.html

相关文章:

  • 哪里有做枪网站的/百度竞价推广是什么意思
  • 酒厂网站模板/疫情防控最新政策
  • 做防腐木花架的网站/怎么优化网络
  • 宜春网站制作/制作网站公司
  • 运用photoshop设计网站首页/株洲网站设计外包首选
  • 网页怎么制作的/seo网页的基础知识
  • 建设一个asp网站/网站如何优化一个关键词
  • 邯郸软件定制/网站内容优化怎么去优化呢
  • 网站开发基本语言/加盟培训机构
  • 上海做网站哪里有/外链工具软件
  • 汕头网站建设 网络服务/微商怎么引流被别人加
  • 网站怎样做排名靠前/网站推广投放
  • 用卫生纸做的礼物街网站/上海seo网站优化软件
  • 上海专业做网站公司/站外seo推广
  • 通达oa 做网站/如何宣传推广
  • vs网站开发如何发布/整合营销的概念
  • 旅游网站设计与建设论文/360排名优化工具
  • 什么大的网站是帝国cms做的/厦门百度快照优化排名
  • 贵德县建设局网站/百度seo价格
  • wordpress相对路径设置/seo优化中商品权重主要由什么决定
  • 交友网网站开发文档/网络推广优化方案
  • 直销软件直销系统开发公司/河北百度seo软件
  • 河源哪有做网站/友情链接的英文
  • 做网站一般用什么框架/网站怎么做到秒收录
  • 服务器做php网站吗/深圳广告公司
  • 天安节能科技园公司做网站/腾讯广告投放平台官网
  • wordpress 优酷去广告/seo搜索引擎优化课后答案
  • 网站制作难点/百度广告联盟下载
  • 门户网站类型有哪些/外链火
  • 邢台建设一个企业网站/常见的网站推广方法有哪些
  • 基于Flask的智能停车场管理系统开发实践
  • 《 服务注册发现原理:从 Eureka 到 Nacos 的演进》
  • 电脑出现英文字母开不了机怎么办 原因与修复方法
  • 个人笔记HTML5
  • 【H264视频编码】一、基本概念
  • PDF文件被加密限制怎么办?专业级解除方案分享