为了账号安全,请及时绑定邮箱和手机立即绑定

Mybatis缓存详解

难度初级
时长 3小时 3分
学习人数
综合评分8.40
5人评价 查看评价
8.4 内容实用
8.4 简洁易懂
8.4 逻辑清晰

最新回答 / mej
是的,没错

最新回答 / 慕梦前来
这个要自己动手,这样学习更好,真的

最新回答 / 崔勇
首先一级缓存必须是同一个session,你的session2提交并不会对session1的缓存进行update,而且这种事应该编码时避免的错误,session在使用完后及时关闭。这个session缓存和数据库事务应该是没什么关系的。个人理解,如有偏差欢迎指正。

最赞回答 / 属牛的金牛座搬砖工
session的生命周期在事务内,也就是说,事务1和事务2分别有对应的session1和session2。一级缓存的作用域在同一session内,所以事务2提交只会清空session2的缓存,对session1没有影响。

最新回答 / 崔勇
可以看一下事务注解是否生效,或者打断点读取一下SQLsession中的一级缓存是否真的没有

最新回答 / 慕仔3163040
在insert之前,如果在一个sqlsession中做了重复的业务查询操作,那么一级缓存是可能命中的,否则的话,的确是永远没有起作用。

最新回答 / weixin_慕九州2048595
二级缓存中:一个SqlSession产生的二级缓存必须在关闭或者提交的时候才有效。因为只有关闭后,才知道你没有做更新等操作,产生的二级缓存才不会被销毁。这就跟事务是一样的,一个事务提交之后,其他的事务才能获取到 前面事务修改的数据。

最新回答 / burg_xun
感觉 没有什么好的方法 只有清空Redis缓存

最新回答 / burg_xun
我感觉没必要究竟于这个字眼, 脏读 在MySql 里面的表现 是 读到事物未提交的数据,改数据可能会发生回滚,所以叫脏读,数据库事物隔离级别  读未提交 是用来解决这个问题的。而这边老师 说的  脏读   是不同的SqlSessionFactory下的问题,这边你所说的 没法读到最新数据的问题,可以理解为脏读的呀,因为缓存来源是从数据库里面读然后缓存下来的,如果SqlSessionFactoryA 里面对数据做了更新, 这个时候SqlSessionFactoryB 里面的可能还是旧的数据,也可以称之为脏数...

最赞回答 / ITLover
Mybatis Cache一级缓存特点自动启用通过在setting中设置localCacheScope= STATEMENT(默认为SESSION)全局禁用一级缓存在Dao接口方法上添加注解:@Options(flushCache=Options.FlushCachePolicy.True),禁用这个方法的一级缓存命中原则,同一SqlSession内,以下5个条件组成key,放入缓存中:条件一:statementId相同条件二:sql上用到的参数要一样条件三:分页参数要一样 条件四:sql语句的文本要一样...
首页上一页12下一页尾页
课程须知
1. 需要懂得java语言 2. 需要懂得xml语法规则 3. 需要懂得sql语句的使用,能否使用sql完成基本的CRUD操作 4. 需要懂得mybatis的基本使用方法,能够使用mybaits完成基本的CRUD操作 5. 需要懂得log4j或其他日志框架的使用方法
老师告诉你能学到什么?
1、mybatis一级缓存的原理及使用 2、mybatis二级缓存的原理及使用 3、mybatis自定义缓存的原理及使用

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消