一、 Resources类:
- 顾名思义就是资源,用于读取资源文件。解析SqlMapConfig.xml文件,创建出相应的对象。其有很多方法通过加载并解析资源文件,返回不同类型的 IO 流对象。
- 读取资源文件有三种方式:
(1)第一种方式:
InputStream in = Resources.getResourceAsStream("SqlMapConfig.xml");
//采用这种方式,从类路径中加载资源,项目的移植性很强,项目从Windows移植到Linux,代码不需要修改,因为这个资源文件一直都在类路径当中。
//Resource关键字表示的是类路径(resources目录)
//通过源码我们发现这种方式底层调用的其实就是第三种方式。
(2)第二种方式:
InputStream is = new FileInputStream("D:\\SqlMapConfig.xml");
//采用这种方式也可以,但是这种放肆可移植性差,Linux系统中没有盘符,这种方式就会找不到文件。
(3)第三种方式:
InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("SqlMapConfig.xml");
//ClassLoader.getSystemClassLoader()获取系统的类加载器
//第一种方式底层就是调用的这个。
二、SqlSessionFactoryBuilder类:
- SqlSessionFactory 的创建,需要使用SqlSessionFactoryBuilder对象的build()方法。由于SqlSessionFactoryBuilder对象在创建完工厂对象后,就完成了其历史使命,即可被销毁。所以,一般会将该对象创建为一个方法内的局部对象,方法结束,对象销毁。
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
三、SqlSessionFactory接口:
- DefaultSqlSessionFactory是实现类。
- SqlSessionFactory接口对象是一个重量级对象(系统开销大的对象),是线程安全的,所以一个应用只需要一个该对象即可。创建 SqlSession 需要使用 SqlSessionFactory 接口的 openSession()方法。
四、SqlSession接口:
- DefaultSqlSession实现类。
- SqlSession 接口对象用于执行持久化操作。一个 SqlSession 对应着一次数据库会话,一次会话以SqlSession 对象的创建开始,以 SqlSession 对象的关闭结束。
- SqlSession 接口对象是线程不安全的,所以每次数据库会话结束前,需要马上调用其 close()方法,将其关闭。再次需要会话,再次创建。 SqlSession 在方法内部创建,使用完毕后关闭。
SqlSession sqlSession = factory.openSession();