您的位置:首页 > 其它

MyBatis 缓存、延迟加载

2017-09-30 09:55 483 查看
一、延迟加载

lazyLoadingEnabled:延迟加载全局开关。当开启时,所有关联对象都会延迟加载。在特定关系中,可通过设置fetchType属性来覆盖该项的开关状态。默认值:true。

aggressiveLazyLoading:当开启时,对任意属性的调用会使带有延迟加载属性的对象完整加载;反之,则每种属性按需加载。默认:false

备注:上面两个属性都在配置文件中配置

说明:选项lazyLoadingEnabled决定是否开启延迟加载,而选项aggressiveLazyLoading则控制是否采用层级加载,

但是它们都是全局性的配置,并不能解决我们需求。所以fetchType属性,它可以处理全局定义无法处理的问题有两个值:

eager:获得当前POJO后立即加载对应的数据。

lazy:获得当前的POJO后延迟加载对应的数据。

在association和collection中进行配置,同时它会忽略全局配置项lazyLoadingEnabled和aggressiveLazyLoading。

二、缓存

在MyBatis中允许使用缓存,缓存一般都放置在可高速读/写的存储器上,比如服务器的内存,它能够有效提高系统的性能。

MyBatis分为一级缓存和二级缓存,同时也可以配置关于缓存的设置。

一级缓存二级缓存:

一级缓存是在SqlSession上的缓存,二级缓存是在SqlSessionFactory上的缓存。

默认是开启SqlSession缓存的,这个缓存不需要POJO对象可序列化(实现java.io.Serializable接口)

二级缓存用法:

0-在配置文件中要开启:

1-在实体类中实现序列化接口

2-在XML中加入标签

3-在service中把查询结果commit。

flushCache代表是否刷新缓存它对整个sql都有效。false表示刷新

useCache属性是select特有的,代表是否需要使用缓存

<cache type="com.xx.xx.xx.xxxCache">
<property name="host" value="localhost"/>
</cache>

<cache-ref namespace="com.bob.analyst.dao.RoleMapper2"/>


表示其他映射器可以使用同样的配置
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息