课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
无论是软件开发还是数据库编程,我们对缓存功能的使用都是非常多的,今天我们就一起来了解一下,缓存功能的常见分级都有哪些。希望通过对本文的阅读,大家对于软件开发中缓存的概念有更直观的认识。
MyBatis同大多数ORM框架一样,提供了一级缓存和二级缓存的支持。
一级缓存:其作用域为session范围内,当session执行flush或close方法后,一级缓存会被清空。
二级缓存:二级缓存和一级缓存机制相同,但是可以自定义其作用范围,如Ehcache。
一级缓存
在默认情况下mybatis中的一级缓存是开启的,一级缓存只在同一个SqlSession中有效不可以跨SqlSession。
SqlSession调用clearCache()清除缓存,或者在执行增删改操作后,SqlSession调用close(),commit()都会清理缓存。
二级缓存
MyBatis中使用二级缓存也非常简单,先开启全局二级缓存配置信息,通过开启cacheEnabled,然后在对应的mapper映射文件中使用标签开启二级缓存即可。
1.select 语句获取出来的对象都会被缓存。
2.二级缓存所有实体类必须实现Serializable接口。
3.所有执行 insert,update 和 delete 语句后,缓存都会被刷新。
4.必须关闭session后才会写入二级缓存中。
5.二级缓存的作用域是全局的,作用范围是映射文件级别的。只在同一类型mapper映射对象中有效。
6.查询数据时,会先查询二级缓存,再查询一级缓存,然后再查询数据库。
我们需要使用二级缓存必须在mybatis主配置文件中设置cacheEnabled设置为true,并且在实体类Mapper中启用缓存。
和缓存相关的设置
1.核心配置文件中的cacheEnabled=true|false,开启或关闭缓存(默认为true),只对二级缓存有效,对一级缓存无效。
2.在select标签中有一个属性useCache=true|false,开启当前查询标签的缓存(默认为true),也是只对二级缓存有效,对一级缓存无效。
3.在每个增删改标签中都有一个flushCache=true|false属性,设置是否清除缓存(默认为true)。一级和二级缓存都会被清空。
4.在查询中也有flushCache=true|false 属性(默认为false),如果设置为true,则每次查询之后都会清除缓存。
5.sqlsession.clearCache()方法,清除缓存。只能清除一级缓存,对二级缓存无效。
6.全局配置文件中的localCacheScope属性,表示本地缓存作用域(一级缓存)。取值为session|statement。默认为session。如果设置为statement,一级缓存会被禁用掉。
节选:博客园
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!