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