SqlSession和SqlSessionFactory

SqlSession:應(yīng)用程序和數(shù)據(jù)庫之間交互的一個(gè)單線程對(duì)象(非線程安全的),數(shù)據(jù)庫的C、R、U、D及事務(wù)的處理接口,select | update | delete | insert | commit | rollback | close | flushStatements等

SqlSessionFactory:工廠設(shè)計(jì)模式,創(chuàng)建SqlSession的工廠。SqlSessionFactory是MyBatis的關(guān)鍵對(duì)象,它是個(gè)單個(gè)數(shù)據(jù)庫映射關(guān)系經(jīng)過編譯后的內(nèi)存鏡像,SqlSessionFactory對(duì)象的實(shí)例可以通過SqlSessionFactoryBuilder對(duì)象類獲得,而SqlSessionFactoryBuilder則可以從XML配置文件或一個(gè)預(yù)先定制的Configuration的實(shí)例構(gòu)建出SqlSessionFactory的實(shí)例.(單例線程安全)

SqlSession和SqlSseionFactory的類結(jié)構(gòu)圖
DefaultSqlSession部分源碼

SqlSessionFactory和SqlSession的實(shí)現(xiàn)過程:
mybatis框架主要是圍繞著SqlSessionFactory進(jìn)行的,創(chuàng)建過程大概如下:

(1)、定義一個(gè)Configuration對(duì)象,其中包含數(shù)據(jù)源、事務(wù)、mapper文件資源以及影響數(shù)據(jù)庫行為屬性設(shè)置settings

(2)、通過配置對(duì)象,則可以創(chuàng)建一個(gè)SqlSessionFactoryBuilder對(duì)象

(3)、通過 SqlSessionFactoryBuilder 獲得SqlSessionFactory 的實(shí)例。

(4)、SqlSessionFactory 的實(shí)例可以獲得操作數(shù)據(jù)的SqlSession實(shí)例,通過這個(gè)實(shí)例對(duì)數(shù)據(jù)庫進(jìn)行

如果是spring和mybaits整合之后的配置文件,一般以這種方式實(shí)現(xiàn),SqlSessionFactory的創(chuàng)建:

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>

<property name="mapperLocations" value="classpath:com/cn/mapper/*.xml"></property>
</bean>

SqlSessionFactoryBean是一個(gè)工廠Bean,根據(jù)配置來創(chuàng)建SqlSessionFactory

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. 簡(jiǎn)介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存儲(chǔ)過程以及高級(jí)映射的優(yōu)秀的...
    笨鳥慢飛閱讀 6,289評(píng)論 0 4
  • 1 緩存介紹# MyBatis支持聲明式數(shù)據(jù)緩存(declarative data caching)。當(dāng)一條SQL...
    七寸知架構(gòu)閱讀 2,231評(píng)論 2 51
  • 姬無塵指著那閃光符咒之處道:“你把我甩過去,我再拉你過去。” 兩個(gè)人共同施為,依樣泡制,一步一步往前進(jìn)行。 過了一...
    榮蔓蔓閱讀 263評(píng)論 0 1
  • 很多小伙伴問: 為啥最近更新這么慢,以前的周更,現(xiàn)在都成了月更了。 答案:忙如意來呀,太多人咨詢了。不過現(xiàn)在已經(jīng)基...
    mlcitta閱讀 284評(píng)論 0 0

友情鏈接更多精彩內(nèi)容