Mybatis中SqlSessionFactory和SqlSession學習和原理


源碼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 {

SqlSession openSession();//用來創建SqlSession

SqlSession openSession(boolean autoCommit);

SqlSession openSession(Connection connection);

SqlSession openSession(TransactionIsolationLevel level);

SqlSession openSession(ExecutorType execType);

SqlSession openSession(ExecutorType execType, boolean autoCommit);

SqlSession openSession(ExecutorType execType, TransactionIsolationLevel level);

SqlSession openSession(ExecutorType execType, Connection connection);

Configuration getConfiguration();

}

   在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塊來關閉它。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM