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í)例.(單例線程安全)


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