缓存:为数据库的查询进行缓存,是减少数据库压力的主要捷径,官方介绍主要有一级缓存和二级缓存,下面简单介绍这两种缓存的区别。
一级缓存:session级别缓存,作用于当前会话。
特点:1.一级缓存默认开启,并且无法关闭。2.作用域是session,一次openSession( )后,如果相同的statement和相同的参数,则不进行查询而是从缓存命中并且返回,如果没有命中则查询数据库。3.任何的增删改都会导致缓存被清空。4.缓存使用Least Recently Used(LRU,最近最少使用的)算法来收回。
二级缓存:SessionFactory级别缓存,作用于整个SessionFactory,多个会话之间共享缓存。
特点:1. 二级缓存需要手动开启,开启的方式是在Mapper.xml中添加<cache/>。2.二级缓存作用域是整个SessionFactory,如果namespace,statement,和sql参数一样,则缓存命中。
它的全局开关:cacheEnabled:默认打开的,如果关闭,所有的Mapper的二级缓存都会失效,默认是打开的。
下面着重介绍二级缓存的其它配置:
官方是这样介绍的: