数据库缓存:
1) 一级缓存:
每个数据库的session都一个与其对应的一级缓存.
一级缓存的生命周期与对应的session一致.
一级缓存是默认生效的
作用: 会将session执行过的查询语句的结果自动保存到一级缓存中,
当同一个session再执行相同的查询时, sql将不再执行,
直接从一级缓存中提取之前的查询结果
好处:减轻数据库的查询压力,如果这个session没有关闭,经常查询的数据可以直接从
一级缓存中提取,不需要再到数据库中进行查询
问题: 缓存中的查询结果, 与真实状态的数据不一致 (脏查询)
为解决脏查询 , 可在下一条查询语句之前进行清理缓存
示例:
package com.util;
import java.io.IOException;
import java.io.InputStream;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
public class MyBatisUtil {
private static SqlSessionFactory factory;
static{//在静态代码块下,factory只会被创建一次
System.out.println("static factory==============="