码迷,mamicode.com
首页 > 其他好文 > 详细

mybatis缓存

时间:2016-09-07 22:19:38      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:

mybatis的延迟加载和缓存技术开始 
mybatis一级缓存 
技术分享 
mybatis的二级缓存

mybatis默认是没有开启二级缓存的。 
开启二级缓存需要在mybatis的全局配置文件sqlMapConfig.xml中加入 

除了开启二级缓存开关外,还需要在各自的mapper.xml中开启二级缓存。 
技术分享

原理图: 
技术分享 
如上图:sqlsession1去查询id为1的用户信息,查询到用户信息就会查询数据存放在二级缓存区域(hashmap)中
sqlsession2去查询id为1的用户信息,首先去缓存中查找是否存在数据,如果存在就直接从二级缓存中取出数据。 
二级缓存和一级缓存的区别:二级缓存的范围更大,多个sqlsession 
可以共享usermapper的二级缓存。 
二级缓存是根据mapper的namespace来划分的,相同namaspace下的mapper共享二级缓存,反之 
如果sqlsession3去执行相同mapper下sql,并执行commit()操作,则清空该命名空间下的二级缓存

二级缓存的测试代码:

技术分享

上面涂黄部分要特别注意,sqlsession关闭时才可以把数据写到二级缓存区域中,如果本namespace下的sqlsession执行了commit()操作,二级缓存就会清空

 

禁用二级缓存 
也可以禁用单个查询的二级缓存,这样要保证每次查询的都是最新数据。 
技术分享

刷新二级缓存(就是清空缓存,切记) 
技术分享 
总结:一般情况下,执行commit()操作之后,都要刷新缓存,因此flushCache都设为true,来避免数据的脏读。

mybatis cache的参数设置 
flushInterval(刷新间隔),可以为任意整数,单位为毫秒值,这个比较有用。

mybatis缓存

标签:

原文地址:http://www.cnblogs.com/panxuejun/p/5851010.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!