-
一级缓存
一级缓存是SqlSession级别的缓存,一般一个请求对应一个SqlSession,缓存时 Executor 执行器内部会将sql信息和内容缓存进入HashMap中,不同的sqlSession间缓存互不影响。 -
二级缓存
二级缓存是基于mapper级别的缓存,多个sqlSession操作一个Mapper的sql,可共用缓存。
一级缓存查看源码:
看到最后 这个缓存被存入PerpetualCache中的cache hashmap中,其中key是hash计算出的值(包名类名sql名,offset ,limit,sql,sql的参数)以及其他信息
二级缓存:开启时要将类实现Serializable接口,因为二级缓存可能在硬盘中,它是基于namespace的。