1. 程式人生 > >mybatis學習總結---快取 MyBatis學習總結(七)——Mybatis快取

mybatis學習總結---快取 MyBatis學習總結(七)——Mybatis快取

MyBatis學習總結(七)——Mybatis快取

1. mybatis快取

  正如大多數持久層框架一樣,MyBatis 同樣提供了一級快取二級快取的支援

  1. 一級快取: 基於PerpetualCache 的 HashMap本地快取,其儲存作用域為 Session,當 Session flush  close 之後,該Session中的所有 Cache 就將清空

    2. 二級快取與一級快取其機制相同,預設也是採用 PerpetualCache,HashMap儲存,不同在於其儲存作用域為 Mapper(Namespace)

,並且可自定義儲存源,如 Ehcache。

    3. 對於快取資料更新機制,當某一個作用域(一級快取Session/二級快取Namespaces)的進行了 C/U/D 操作後,預設該作用域下所有 select 中的快取將被clear。

 2. 快取測試

2.1 同一個SqlSession進行兩次查詢

    public static void sameSession()
    {
        SqlSession session = Operate.getSession();
        String namespace = "com.skd.mybits.domain.UserMapper.getUser";
        
        
long before = System.currentTimeMillis(); session.selectOne(namespace, 1); long after = System.currentTimeMillis(); System.out.println("第一次查詢耗時:"+ (after-before)); long before2 = System.currentTimeMillis(); session.selectOne(namespace, 1); long
after2 = System.currentTimeMillis(); System.out.println("第二次查詢耗時:"+ (after2-before2)); }

結果: