SqlSession 的创建需要借助于 SqlSessionFactory。SqlSessionFactory 是 Mybatis 的关键对象。每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。如下图所示:

SqlSessionFactory 可以理解为是创建 SqlSession 的工厂,SqlSessionFactory 是线程安全的,一旦被创建,应该在应用执行期间都存在。在应用运行期间不要重复创建多次,建议使用单例模式。
SqlSession 的作用类似于一个 JDBC 中的 Connection 对象,代表着一个连接资源的启用。参考自MyBatis SqlSession简介
具体而言,SqlSession 的作用有 3 个:

  • 获取 Mapper 接口。
  • 发送 SQL 给数据库。
  • 控制数据库事务。

SqlSession 是应用程序与持久存储层之间执行交互操作的一个单线程对象,也是 Mybatis 执行持久化操作的关键对象。SqlSession 对象完全包含以数据库为背景的所有执行 SQL 操作的方法,它的底层封装了 JDBC 连接,可以用 SqlSession 实例来直接执行已映射的 SQL 语句。每个线程都应该有它自己的 SqlSession 实例。SqlSession 的实例不能被共享,也是线程不安全的,绝对不能将 SqlSession 实例的引用放在一个类的静态字段甚至是实力字段中。也绝不能将 SqlSession 市里的引用放在任何类型的管理范围中,比如 Servlet 当中的 HttpSession 对象中。使用 SqlSession 之后关闭 Session 很重要,应该确保使用 finally 块来关闭它。

更多推荐

Mybatis之 SqlSession简介