一起學習Mybatis----基本構成/生命週期
基本構成:
SqlsessionFactoryBuilder(構造器):它會根據配置資訊或者程式碼來生成SqlsessionFactory(工廠介面)。
SqlsessionFactory:依靠工廠來生成 Sqlsession(會話)。
Sqlsession:是一個既可以傳送SQL去執行並返回結果,也可以獲取 Mapper的介面。
SQLMapper:它是 My Baits新設計的元件,它是由一個Java介面和XML檔案(或註解)構成的,需要給出對應的SQL和對映規則。它負責傳送SQL去執行,並返回結果。
生命週期:
SqlsessionFactoryBuilder與SqlsessionFactory與Sqlsession與SQLMapper的生命週期。
SqlsessionFactoryBuilder:
SqlsessionFactoryBuilder是利用XML或者Java編碼獲得資源來構建 SqlsessionFactory的,通過它可以構建SqlsessionFactory它的作用就是一個構建器,一旦我們構建了SqlSessionFactory,它的作用就已經完結,失去了存在的意義,這時我們就應該毫不猶豫的廢棄它,將它回收。所以它的生命週期只存在於方法的區域性,它的作用就是生成SqlSessionFactory物件。
SqlsessionFactory:
SqlsessionFactory的作用是建立 Sqlsession,而 SqIsession就是一個會話,相當於JDBC中的 Connection物件。每次應用程式需要訪問資料庫,我們就要通過 SqlsessionFactory建立 Sqlsession,但是SqlsessionFactory應該在 My Batis應用的整個生命週期中。因而SqlsessionFactory的建立應該採用單例模式。避免過多的 Connection被消耗。
Sqlsession:
Sqlsession是一個會話,相當於JDBC的一個 Connection物件,它的生命週期應該是在請求資料庫處理事務的過程中。它是一個執行緒不安全
SQLMapper:
Mapper是一個介面,而沒有任何實現類,它的作用是傳送SQL,然後返回我們需要的結果,或者執行SQL從而修改資料庫的資料,因此它應該在一個 Sqlsession事務方法之內,是一個方法級別的東西。它就如同JDBC中的一條SQL語句的執行,它最大的範圍和Sqlsession是相同的。儘管我們想一直儲存著 Mapper,但是你會發現它很難控制,所以儘量在一個 Sqlsession事務的方法中使用它們,然後廢棄掉。