摘要:一級緩存和二級緩存緩存將語句查詢出來對應的對象進行緩存,供后續(xù)對象使用。所以說,一級緩存是基于的。為了解決相互共享問題,提供二級緩存解決該問題。注意,一級緩存對每個對象要求他們在所有語句后必須執(zhí)行語句,否則,不存在一級緩存。
Mybatis緩存
因為熱愛,所以拼搏。 --RuiDer
前導必備- 數據庫 - MybatisMybatis緩存
Mybatis提供緩存支持,志在提升開發(fā)的性能。數據庫數據的索引一般是基于磁盤的,而內存和高速緩存相對磁盤的讀寫速度相當快,基本是磁盤讀寫數據的十倍。尤其在互聯(lián)網開發(fā)中,追求速度,緩存為性能提供捷徑。Mybatis緩存包括一級緩存和二級緩存,一級緩存基于SqlSession層面,二級緩存基于SqlSessionFactory層面。一級緩存和二級緩存
緩存:將sql語句select查詢出來對應的POJO對象進行緩存,供后續(xù)SqlSession對象使用。 一級緩存 條件: - 同一個SqlSession對象 - 同一個sql查詢語句 當同一個SqlSession對象進行兩次相同select語句查詢時,第一次會執(zhí)行sql語句進行數據庫的索引, 之后將所查詢數據對應的POJO對象進行緩存;第二次執(zhí)行相同參數的sql語句查詢前,不會像第一次執(zhí)行sql語句, 而是直接從緩存中索引數據對象。所以說,一級緩存是基于SqlSession的。不同的SqlSession對象的緩存不可以 共享,不能相互訪問。為了解決相互共享問題,Mybatis提供二級緩存解決該問題。注意,一級緩存對每個SqlSession 對象要求他們在所有sql語句后必須執(zhí)行commit語句,否則,不存在一級緩存。 二級緩存 條件: - 同一個SqlSessionFactory對象 - 不同的SqlSession對象 - 共享POJO對象、 二級緩存是相對SqlSessionFactory對象而言的,同一個SqlSessionFactory創(chuàng)建的不同的SqlSession對象, 可以共享該SqlSessionFactory下的所有POJO對象,也就是數據庫數據的共享。但是二級緩存要求對應的POJO類需要實現(xiàn) 序列化,也就是實現(xiàn)java.io.Serializable接口。一級緩存 和 二級緩存 的配置
一級緩存:Mybatis默認一級緩存,只要每個SqlSession對象執(zhí)行commit語句,都會存在一級緩存。 二級緩存:二級緩存配置cache元素配置項加入上述語句,就會開啟二級緩存。二級緩存會進行序列化和反序列化的過程,所以說POJO 必須要實現(xiàn)Seriaizable接口。二級緩存cache元素會將select出來的POJO對象進行緩存,對于 insert,update,delete sql語句二級緩存會自動刷新。
//cache接口源碼 public interface Cache{ //獲取緩存id public int getId(); //保存POJO對象,key為鍵,value為值 public void putObject(Object key,Object value); //獲取POJO對象 public Object getObject(Object key); //清除緩存 void clear(); //獲取緩存大小 public int getSize(); //獲取讀寫鎖,主要是多線程時使用 ReadWriteLock getReadWriteLock(); }配置Redis或者MongoDB緩存處理
我的GitHub
我的博客
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/71405.html
摘要:一級緩存值得注意的地方默認就是支持一級緩存的,并不需要我們配置和整合后進行代理開發(fā),不支持一級緩存,和整合,按照的模板去生成代理對象,模板中在最后統(tǒng)一關閉。總結的一級緩存是級別的。 前言 本文主要講解Mybatis的以下知識點: Mybatis緩存 一級緩存 二級緩存 與Ehcache整合 Mapper代理 使用Mapper代理就不用寫實現(xiàn)類了 逆向工程 自動生成代碼 ...
摘要:得到用戶信息,將用戶信息存儲到一級緩存中。如果中間去執(zhí)行操作執(zhí)行插入更新刪除,則會清空中的一級緩存,這樣做的目的為了讓緩存中存儲的是最新的信息,避免臟讀。 基礎: 1、 概念:Java當中的一個持久層框架。2、 特點、優(yōu)勢:(1)把java代碼和SQL代碼做了一個完全分離。(2)良好支持復雜對象的映射(輸入映射、輸出映射)(3)使用動態(tài)SQL,可以預防SQL注入。3、 ...
摘要:緩存介紹正如大多數持久層框架一樣,同樣提供了一級緩存和二級緩存的支持一級緩存基于的本地緩存,其存儲作用域為,當或之后,該中的所有就將清空。一級緩存實現(xiàn)對的操作內部都是通過來執(zhí)行的。 MyBatis緩存介紹 正如大多數持久層框架一樣,MyBatis 同樣提供了一級緩存和二級緩存的支持 一級緩存: 基于PerpetualCache 的 HashMap本地緩存,其存儲作用域為 Se...
摘要:本文章的源碼再文章末尾什么是查詢緩存有一級緩存和二級緩存。默認開啟一級緩存。證明了一級緩存只是在數據庫會話內部共享的。但是,整合到中后,一級緩存就會被關閉。根據時間表比如沒有刷新間隔緩存不會以任何時間順序來刷新。 倉庫地址:spring-boot-learning歡迎star、fork,給作者一些鼓勵 學習SpringBoot集成Mybatis的第二章,了解到Mybatis自帶的緩存機...
摘要:本文章的源碼再文章末尾什么是查詢緩存有一級緩存和二級緩存。默認開啟一級緩存。證明了一級緩存只是在數據庫會話內部共享的。但是,整合到中后,一級緩存就會被關閉。根據時間表比如沒有刷新間隔緩存不會以任何時間順序來刷新。 倉庫地址:spring-boot-learning歡迎star、fork,給作者一些鼓勵 學習SpringBoot集成Mybatis的第二章,了解到Mybatis自帶的緩存機...
閱讀 870·2021-11-22 09:34
閱讀 1003·2021-10-08 10:16
閱讀 1816·2021-07-25 21:42
閱讀 1790·2019-08-30 15:53
閱讀 3519·2019-08-30 13:08
閱讀 2174·2019-08-29 17:30
閱讀 3342·2019-08-29 17:22
閱讀 2173·2019-08-29 15:35