天天看點

Mybatis的生命周期SqlSessionFactoryBuilderSqlSessionFactorySqlSessionSqlMapper

本文主要是針對Mybatis中核心元件,包括SqlSessionFactoryBuilder(構造器),
SqlSessionFactory,SqlSession,SqlMapper的生命周期。本文的資料來源是
深入淺出MyBatis技術原理與實戰的第二章的第三小節。
需要本書的讀者可以通過以下方式獲得:
           

百度雲連結 提取碼:mq2v

SqlSessionFactoryBuilder

SqlSessionFactoryBuilder,該類是根據配置資訊或者代碼來建立SqlSessionFactory,可以建立多個SqlSessionFactory,可想而知,該類在建立SqlSessionFactory之後就完成任務了,是以SqlSessionFactoryBuilder所在的方法體内運作完後則等待回收。

SqlSessionFactory

SqlSessionFactory是SqlSessionFactoryBuilder根據配置資訊建立的,其作用相當于JDBC中的Connection對象,對象中存儲了連接配接資料庫的資料源(dataSource),資料庫驅動等資訊,它的作用是建立SqlSession。

我們在通路資料庫時是通過SqlSessionFactory建立的SqlSession來通路的,是以SqlSessionFactory的生命周期應該是Mybatis應用的整個生命周期。

由于SqlSessionFactory的職責隻是建立SqlSession,是以我們選擇使用單例模式來建立它,建立多個隻會占有系統資源。

SqlSession

對于SqlSession來說,其作用相當于JDBC的一次連結,SqlSession的生命周期是當發起查詢到傳回結果後。

在完成資料庫操作後我們應該關閉連結,若不關閉,資料庫連結池會存在無用連結而使得資源減少。是以我們在finally中關閉連結。

SqlMapper

SqlMapper由同名的接口類和XML檔案組成,XML檔案的mapper元素的屬性namespace的值與接口類的全限定名相同,同時子元素的屬性值id與接口類的方法名相同,完成映射。對于SqlMapper來說,由于一個SqlSession對應一個SqlMapper,是以其生命周期與SqlSession相同。

繼續閱讀