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对象给客户端,供客户端使用。