MyBatis中的SqlSessionFactory和SqlSession


SqlSessionFactory

SqlSessionFactory是單個數據庫映射關系經過編譯后的內存鏡像。

SqlSessionFactory對象實例可以通過SqlSessionFactoryBuilder對象獲得。

而SqlSessionFactoryBuilder則可以通過從XML配置文件或一個預先定制的Configuration的實例構建出SqlSessionFactory的實例。

每一個MyBatis的應用都以一個SqlSessionFactory對象的實例為核心。SqlSessionFactory是創建SqlSession的工廠。

SqlSession

SqlSession是執行持久化操作的對象,類似於JDBC中的Connection。是應用程序與持久存儲層之間執行交互操作的一個單線程對象。

SqlSession對象包含完全以數據庫為背景的左右執行SQL操作的方法,它的底層封裝了JDBC連接,可以用SqlSession實例來執行已映射的SQL語句。

每個線程都應該有它自己的SqlSession實例,SqlSession的實例不能被共享,也是線程不安全的。

 

InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();
User user = new User();
user.setName("ss");
user.setSex("男");
user.setAge(123);
session.insert("mapper.UserMapper.save", user);
session.commit();
session.close();

 初始化步驟:

1、調用SqlSessionFactoryBuilder對象的build(inputStream)方法。

2、SqlSessionFactoryBuilder會根據輸入流inputStream等信息創建XMLConfigBuilder對象。

3、SqlSessionFactoryBuilder調用XMLConfigBuilder對象的parse()方法。

4、XMLConfigBuilder對象解析XML配置文件返回Configuration方法。

5、SqlSessionFactoryBuilder根據Configuration對象創建一個DefaultSessionFactory對象。

6、SqlSessionFactoryBuilder返回DefaultSessionFactory對象給客戶端,供客戶端使用。


免責聲明!

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



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