文档章节

mybatis 二级缓存使用注意

之渊
 之渊
发布于 2017/05/12 17:55
字数 851
阅读 91
收藏 0

今天想在项目里面 配置使用 redis缓存,想 使用redis 缓存 mybatis dao层的缓存。。。 即开始 使用redis 作为mybatis的 二级缓存使用。 项目是 小项目,默认是 没有开启二级缓存的。。。。 我看了一下 官方 mybatis 的配置,默认是 开启二级缓存的。。。 当前 感觉 很相信官方,觉得项目配置二级缓存错了,,,项目性能肯定有影响啊,不开启的话,而且人家官方都默认开启了,,, 然后接着继续百度看文章,,,, 我去啊,差点被自己坑死了。。。 原来二级缓存不能随便开的。要看场景和情况了。不然有可能造成数据不一致性而造成 很大的 BUG,就麻烦大了。。。当然 出现bug的几率会小很多,,,可是还是有可能的,到时候数据库里面的数据不一致了,就有点受了。不能为了 那点性能问题,,

<!--
     | 全局配置设置
     |
     | 可配置选项                   默认值,     描述
     |
     | aggressiveLazyLoading       true,     当设置为‘true’的时候,懒加载的对象可能被任何懒属性全部加载。否则,每个属性都按需加载。
     | multipleResultSetsEnabled   true,     允许和不允许单条语句返回多个数据集(取决于驱动需求)
     | useColumnLabel              true,     使用列标签代替列名称。不同的驱动器有不同的作法。参考一下驱动器文档,或者用这两个不同的选项进行测试一下。
     | useGeneratedKeys            false,    允许JDBC 生成主键。需要驱动器支持。如果设为了true,这个设置将强制使用被生成的主键,有一些驱动器不兼容不过仍然可以执行。
     | autoMappingBehavior         PARTIAL,  指定MyBatis 是否并且如何来自动映射数据表字段与对象的属性。PARTIAL将只自动映射简单的,没有嵌套的结果。FULL 将自动映射所有复杂的结果。
     | defaultExecutorType         SIMPLE,   配置和设定执行器,SIMPLE 执行器执行其它语句。REUSE 执行器可能重复使用prepared statements 语句,BATCH执行器可以重复执行语句和批量更新。
     | defaultStatementTimeout     null,     设置超时时间,它决定驱动等待数据库响应的秒数。
     | -->
    <settings>
        <!-- 这个配置使全局的映射器启用或禁用缓存,true 开启mybatis默认的二级缓存,默认是 true.
        但是  为了数据的准确性,不要推荐使用 二级缓存或者是redis... 
        除非是 慢查询或者是数据量很大的,或者其他场景下,一般情况不要开启二级缓存或者随便使用第三方的缓存.
        特别的是 :  一种最场景的场景就是 后台SQL客户端数据库执行改了SQL,前端查询还是之前的缓存数据就苦逼了。。。
         -->
        <setting name="cacheEnabled" value="false"/>
        <!-- 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载
        延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。 特定关联关系中可通过设置fetchType属性来覆盖该项的开关状态。
        默认是 false 
         -->
        <setting name="lazyLoadingEnabled" value="true"/>
        <setting name="multipleResultSetsEnabled" value="true"/>
        <setting name="useColumnLabel" value="true"/>
        <setting name="defaultExecutorType" value="REUSE"/>
        <setting name="defaultStatementTimeout" value="25000"/>
    </settings>

参考地址: http://blog.csdn.net/isea533/article/details/44566257

以及 http://blog.csdn.net/potentialenergy/article/details/52924139

© 著作权归作者所有

共有 人打赏支持
之渊
粉丝 11
博文 551
码字总数 161987
作品 0
佛山
程序员
私信 提问
mybatis入门教程(九)------mybatis缓存

Mybatis 缓存 正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的支持 1. 一级缓存: 基于PerpetualCache 的 HashMap本地缓存,其存储作用域为 Session,当 Session flush 或...

残风vs逝梦
2014/06/16
0
5
mybatis缓存的使用及理解

和hibernate一样,mybatis也有缓存机制 一级缓存是基于 PerpetualCache(mybatis自带)的 HashMap 本地缓存,作用范围为session,所以当session commit或close后,缓存就会被清空 二级缓存默认也是...

whaon
2013/04/16
0
0
你真的懂Mybatis缓存机制吗

MyBatis自带的缓存有一级缓存和二级缓存。 一级缓存 Mybatis的一级缓存是指Session缓存。一级缓存的作用域默认是一个SqlSession。Mybatis默认开启一级缓存。 也就是在同一个SqlSession中,执...

技术小能手
2018/07/10
0
0
Mybatis缓存(1)--------系统缓存及简单配置介绍

前言 Mybatis的缓存主要有两种: 系统缓存,也就是我们一级缓存与二级缓存; 自定义的缓存,比如Redis、Enhance等,需要额外的单独配置与实现,具体日后主要学习介绍。 在这里主要记录系统缓...

JJian
2018/07/29
0
0
MyBatis学习手记(二)MyBatis缓存机制

MyBatis学习手记二 前:MyBatis官方学习(中文)文档 http://mybatis.github.io/mybatis-3/zh/index.html 一,首先,要使用MyBatis必须使用官方提供的MyBatis的JAR包 链接:https://github.com...

xiaolei123
2015/09/15
1K
4

没有更多内容

加载失败,请刷新页面

加载更多

搜索引擎(Lucene-索引详解)

IndexWriter详解 问题1:索引创建过程完成什么事? 回顾架构图 Lucene索引创建API 图示 Lucene索引创建代码示例 public static void main(String[] args) throws IOException { // 创建...

这很耳东先生
12分钟前
1
0
JavaScript数据结构之栈实例用法

在本篇文章里小编给大家分享了关于JavaScript数据结构之栈实例用法内容,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。 栈 先来看...

前端攻城老湿
22分钟前
1
0
springboot 使用 redis 管理session

1.pom.xml 引入依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> </dependency><dependency> ......

狼王黄师傅
22分钟前
1
0
Js取小数点后两位四种方法

在本篇文章里小编给大家分享了关于js取小数点后两位四种方法和实例代码,写的十分的全面细致,具有一定的参考价值,对此有需要的朋友可以参考学习下。如有不足之处,欢迎批评指正。 Javascri...

前端攻城小牛
29分钟前
1
0
js 唤端

h5页面唤起app const appDownload = () => { // 分享- 唤起 - 下载function failed() {window.location = '应用商店的scheme '}function transfer(cb) {window.location.href =......

何祯粮
29分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部