1. 程式人生 > >MyBatis快取配置

MyBatis快取配置

一、快取:
所謂的快取從廣義上來講:提升資料的查詢效能。通過整個的計算機的結構來講,CPU所需要的資料通過記憶體取得,而記憶體的資料可以通過磁碟載入完成。但是在整個的專案的開發環節過程之中會出現一種可怕的問題:就是說計算機可能很忙碌,一個程序需要進行磁碟檔案的讀取,需要1S的時間,但是如果說現在有20W個程序同時需要進行資料的讀取過程,那麼這個過程就有可能造成計算機的假死狀態。所以現在的開發基本上需要解決最大的問題就在於:記憶體和磁碟之間的資料讀取效率問題。
所以這個時候發現程式效率最大的問題都來自於磁碟。
快取
在整個的快取操作過程之中需要考慮如下幾種問題:
· 什麼樣的資料需要被放在快取裡?
· 資料需要在什麼時候通過快取清空;
· 資料如果都儲存在一個快取裡面,可能不方便。
快取一般分為兩種:一級快取(單個使用者、SqlSession)、二級快取(所有使用者、SqlSessionFactory)。
當你使用了快取的話,就意味著你喪失了自動資料同步的功能支援。也就是說在記憶體中的資料與資料表中的資料可能不一致。
二、一級快取
一級快取指的是SqlSession 級的快取處理,並且不管使用者如何處理,一級快取永遠都會存在。
由於查詢的是同一條資料的記錄,並且是同一個SqlSession 介面物件發出的,所以最終只向資料庫裡面傳送了一次資料查詢的請求,而第二次的查詢並沒有發出請求,因為它發現快取中有同樣的資料存在。
實際當修改了第一次查詢結果中的資料之後,隨後第二次查詢的結果裡面的內容也會發生相應的改變,但是此時資料庫之中並沒有任何的變化。
那麼如果說同樣的操作,在第二次查詢前進行了一個數據更新操作呢?
此時的快取並沒有起作用,第二次的查詢會直接進行資料庫的查詢操作處理。這是因為在進行提交處理的時候,會自動進行快取的清空,因為它認為這個資料已經沒有必要進行快取了。
如果有需要也可以利用SqlSession 介面中提供的方法進行手工的快取清空:
· 手工清空快取:public void clearCache()
三、二級快取
兩個不同使用者查詢相同資料,那麼這些資料預設情況下是無法快取的,並且每一個SqlSession 都要發出查詢指令。
1、 如果要想開啟二級快取,則需要進行如下修改:

<!-- 進行Mybatis的相應的環境的屬性定義 -->
<settings> <!-- 在本專案之中開啟二級快取 -->
    <setting name="cacheEnabled" value="true"/>
</settings>

· 在需要使用到News.xml 的快取檔案上進行相應的配置,表示該檔案允許使用快取:

<cache/>

2、 如果要想真正啟用快取,還需要注意兩點:
· 第一個session 必須關閉之後才會將內容寫入到二級快取之中,如果不關閉,快取無法寫入:
如果要想進行快取的實現,那麼VO 類一定要實現java.io.Serializable 介面:
3、News.xml 檔案裡面簡單的編寫了一個“cache/”配置,這個配置實際上只是啟用了預設的快取模式:
但是對於以上的引數的詳細解釋如下:
· “eviction=”FIFO””:表示該快取操作所使用的演算法,有如下幾種演算法模式:
|- LRU(預設的):最近最少使用演算法,將最近不使用的物件進行清空;
|- FIFO:先進先出演算法,預設會自動清除最早快取的資料物件;
|- SOFT:軟引用,當記憶體不足時,執行GC 會立刻清除;
|- WEAK:弱應用,只要發生了GC,該快取的物件就會被清空。
· “flushInterval=”10000””:快取的重新整理時間,單位為毫秒;
· “readOnly=”true””:快取永遠做只讀配置,千萬不要做讀、寫配置;
· “size=”512””:佔用的記憶體大小,預設是1024K。

相關推薦

MyBatis快取配置

一、快取: 所謂的快取從廣義上來講:提升資料的查詢效能。通過整個的計算機的結構來講,CPU所需要的資料通過記憶體取得,而記憶體的資料可以通過磁碟載入完成。但是在整個的專案的開發環節過程之中會出現一種可怕的問題:就是說計算機可能很忙碌,一個程序需

myBatis自帶的快取配置(Cache)

版權宣告:本文為博主原創文章,未經博主允許不得轉載。    https://blog.csdn.net/sotong006/article/details/78878820 如果要實現 mybatis 的二級快取,一般來說有如下兩種方式: 1. 採用 mybatis 內

mybatis 一級快取和二級快取 配置使用

mybatis提供查詢快取,用於減輕資料壓力,提高資料庫效能。 mybaits提供一級快取,和二級快取。 1、一級快取 ​ MyBatis 預設開啟了一級快取,一級快取是在SqlSession 層面進行快取的。即,同一個SqlSession ,多次呼叫同一個Mapp

MyBatis快取配置(Cache)

<cache /> 3、Mapper XML檔案配置支援cache後,檔案中所有的Mapper statement就支援了。此時要個別對待某條,需要: <select id="inetAton" parameterType="string" resultType="integer" useC

MyBatis-23MyBatis快取配置【二級快取

概述 這裡我們來看下工作中最常用的二級快取。 MyBaits的二級快取可以理解為存在於SqlSessionFactory的生命週期中。 目前還沒接觸過同時存在多個SqlSessionFactory的情況,但可以知道當存在多個SqlSessi

Mybatis redis 快取配置

在mybatis中,快取的功能由根介面Cache(org.apache.ibatis.cache.Cache)定義。整個體系採用裝飾器設計模式, 資料儲存和快取的基本功能由PerpetualCache(org.apache.ibatis.cache.impl.Perpetu

mybatis通過配置檔案方式整合redis快取,替換mybatis二級快取

mybatis通過redis取代二級快取,二級快取的缺點不再贅述。mybatis預設快取是PerpetualCache,可以檢視一下它的原始碼,發現其是Cache介面的實現;那麼我們的快取只要實現該介面即可。該介面有以下方法需要實現:  String getId();  in

筆記:MyBatis XML配置-typeAliases 內建別名表

short batis big int arraylist spa myba bottom one 別名 映射的類型 _byte byte _long long _short short _int int _integer int _double double _float

筆記:MyBatis XML配置-typeHandlers 默認類型處理器

jdbc span decimal ade byte[] har bottom string jdb 類型處理器 Java 類型 JDBC 類型 BooleanTypeHandler java.lang.Boolean, boolean 數據

SpringMVC Spring MyBatis整合配置文件

isp xmlns manage where spl return 創建 lec common 1、spring管理SqlSessionFactory、mapper 1)在classpath下創建mybatis/sqlMapConfig.xml <?xml vers

spring、mybatis事務配置和控制

數據庫 one ons str size 連接池 action b2c drive springmybatis.xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:x

Spring,SpringMVC,Mybatis配置文件報錯解決(Referenced file contains errors)

info ems art valid mes ont conf window 程序   今天自己搭建了ssm框架,頭文件什麽的都是拷貝的筆記的,本來不會出錯。可是偏偏報錯(如下): Referenced file contains errors (http://www.i

Spring+SpringMVC+Mybatis環境配置

gmv name adsi rtu hand odi 初始 技術 監聽 文件目錄展示 resouce目錄展示 src目錄展示 WebRoot目錄展示 jdbc.propertise driver=com.mysql.jdbc.Driver url=jdbc:m

01 Mybatis配置和使用

-m sel 2.7 manager pooled 存儲 tis builder source 一、Mybatis 是什麽 MyBatis 是一個支持普通SQL查詢、存儲過程和高級映射的優秀持久層框架。MyBatis 消除了幾乎所有的 JDBC 代碼和參數的手工設置以及對

Mybatis配置文件】就是這麽簡單

nds util tin 資源 選擇 settings body 公眾號 正常 配置文件和映射文件還有挺多的屬性我還沒有講的,現在就把它們一一補全 映射文件 在mapper.xml文件中配置很多的sql語句,執行每個sql語句時,封裝為MappedStatement對象,m

Mybatis-Generator插件的使用與Spring集成Mybatis配置

Mybatis Mybatis-Generator插件 Spring集成Mybatis 持久層框架 SSM Mybatis-Generator插件 Mybatis-Generator是一個用於自動生成dao層接口、pojo以及mapper xml的一個Mybatis插件,該插件有三種用法:

Spring Boot中使用MyBatis註解配置詳解(1)

sql type .org 實體 sch 整合 PE 匯總 同傳 之前在Spring Boot中整合MyBatis時,采用了註解的配置方式,相信很多人還是比較喜歡這種優雅的方式的,也收到不少讀者朋友的反饋和問題,主要集中於針對各種場景下註解如何使用,下面就對幾種常見的情況舉

(手寫)mybatis 核心配置文件和接口不在同一包下的解決方案

內置 中間 configure idea pan 數據源配置 uil 基礎 主目錄 smart-sh-mybatis項目app.xml文件中此處配置為: 1 <!-- 從整合包裏找,org.mybatis:mybatis-spring:1.2.4 -->

mybatis xml配置文件模版

password rac 書寫 數據庫連接池 transacti mapper cte like odi mybatis xml配置文件模版 1、mybatis核心配置文件書寫(SqlMapConfig.xml) <?xml version="1.0" encod

IDEA中Mybatis傳統配置映射文件的時候遇到org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): mapper.UserMapper.getUserById錯誤時

apache image 傳統 .com ima app .get 映射 bin 我不知道是IDEA機制的問題還是咋回事 不會自動加載到這個文件裏來 沒搞太明白 IDEA中Mybatis傳統配置映射文件的時候遇到org.apache.ibatis.bind