源碼git地址:https://github.com/mybatis/mybatis-3 目標結構: mybatis是數據持久化解決方案將用戶從JDBC訪問中解放出來,用戶只需要定義需要操作的SQL語句,無需關註底層JDBC操作,就可以以面向對象的方式來進行持久層操作,底層資料庫的連接獲取,資料庫訪 ...
源碼git地址:https://github.com/mybatis/mybatis-3 目標結構:
mybatis是數據持久化解決方案將用戶從JDBC訪問中解放出來,用戶只需要定義需要操作的SQL語句,無需關註底層JDBC操作,就可以以面向對象的方式來進行持久層操作,底層資料庫的連接獲取,資料庫訪問的實現,事務控制等都無須用戶關心。本章學習mybatis中的常見對象SqlSessionFactory和SqlSession
一、SqlSessionFactory SqlSessionFactory是mybatis的關鍵對象,它是單個資料庫映射關係經過編譯後的記憶體鏡像,SqlSessionFactory可以通過SqlSessionFactoryBuild對象類獲取,而SqlSessionFactoryBuild則可以從xml配置文件或一個預先定製的Configuration的實例構建出SqlSessionFactory的實例,每一個mybatis的應用程式都以一個SqlSessionFactory對象的實例為核心,sqlSessionFactory也是線程安全的,SqlSessionFactory一旦被創建,在應用執行期間都存在,不宜重覆創建多次,推薦使用單例模式,SqlSessionFactory是創建SqlSession的工廠。 SqlSessionFactory:介面源碼 public interface SqlSessionFactory { 在Spring中構建SqlSessionFactory: 通過@Bean配置一個DataSource類,構造一個SqlSessionFactoryBean實例通過setDataSource()將DataSource綁定,通過getObject()方法創建SqlSessionFactory對象 二、SqlSession SqlSession也是mybatis中的重要對象,是持久化操作的獨享。類似於jdbc中的Connection,它是應用程式與持久層之間執行互操作的一個單線程對象,也是Mybatis執行持久化操作的關鍵對象,SqlSession對象完全包含以資料庫為背景的所執行SQL操作方法。底層封裝了JDBC連接,可以用SqlSession的實例對來執行被映射的SQL語句,每個線程有他自己的SqlSession實例,SqlSession的實例不能被共用,SqlSession也不是線程安全的,絕對不能將SqlSession實例的引用放在任何類型的管理範圍中,使用完SqlSession之後關閉Session很重要,放在finally塊來關閉它。 |