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對象給客戶端,供客戶端使用。