天天看點

MyBatis核心元件淺析

MyBatis核心元件如下:

  • SqlSessionFactoryBuilder(構造器)

    :它會根據配置資訊或者代碼來生成

    SqlSessionFactory(工廠接口)

  • SqlSessionFactory

    :依靠工廠來生成

    SqlSession(會話)

  • SqlSession

    :是一個既可以發送SQL去執行并傳回結果,也可以擷取

    Mapper

    的接口
  • SQL Mapper

    :它是由一個Java接口和XML檔案(或注解)構成的,需要給出對應的SQL和映射規則。它負責發送SQL去執行,并傳回結果
    MyBatis核心元件淺析

1、SqlSessionFactoryBuilder

SqlSessionFactoryBuilder是利用XML或者Java編碼獲得資源來建構SqlSessionFactory的,通過它可以建構多個SessionFactory。它的作用就是一個構造器,一旦建構了SqlSessionFactory,它的作用就已經完結,這時就可以将它回收。是以它的生命周期隻存在于方法的局部,它的作用就是生成SqlSessionFactory對象

2、SqlSessionFactory

SqlSessionFactory的作用是建立SqlSession,而SqlSession就是一個會話,相當于JDBC中的Connection對象。每次應用程式需要通路資料庫,就要通過SqlSessionFactory建立SqlSession,是以SqlSessionFactory應該在MyBatis應用的整個生命周期中。而如果多次建立同一個資料庫的SqlSessionFactory,則每次建立SqlSessionFactory會打開更多的資料庫連接配接資源,那麼連接配接資源就很快會被耗盡。是以SqlSessionFactory的責任是唯一的,它的責任就是建立SqlSession,是以應該采用單例模式。正确的做法應該是使得每一個資料庫隻對應一個SqlSessionFactory,管理好資料庫資源的配置設定,避免過多的Connection被消耗

3、SqlSession

SqlSession是一個會話,相當于JDBC的一個Connection對象,它的生命周期應該是在請求資料庫處理事務的過程中。它是一個線程不安全的對象,操作資料庫需要注意其隔離級别和資料庫鎖等特性。此外,每次建立的SqlSession都必須及時關閉它,它長期存在就會使資料庫連接配接池的活動資源減少,對系統性能的影響很大。它存活于一個應用的請求和操作,可以執行多條SQL,保證事務的一緻性

4、Mapper

Mapper是一個接口,它的作用就是發送SQL,然後傳回結果,或者執行SQL進而修改資料庫的資料,是以它應該在一個SqlSession事務方法之内,是一個方法級别的東西。它就如同JDBC中的一條SQL語句的執行,它最大的範圍和SqlSession是相同的

MyBatis核心元件淺析

繼續閱讀