1)SqlSessionFactoryBuiler
首 先 是 SqlSessionFactoryBuiler 。 它 是 用 来 构 建 SqlSessionFactory 的 , 而
SqlSessionFactory 只需要一个,所以只要构建了这一个 SqlSessionFactory,它的使命
就完成了,也就没有存在的意义了。所以它的生命周期只存在于
方法的局部
。
2)SqlSessionFactory
SqlSessionFactory 是用来创建 SqlSession 的,每次应用程序访问数据库,都需要
创建一个会话。因为我们一直有创建会话的需要,所以 SqlSessionFactory 应该存在于
应用的整个生命周期中(
作用域是应用作用域
)。创建 SqlSession 只需要一个实例来做
这件事就行了,否则会产生很多的混乱,和浪费资源。所以我们要采用单例模式。
3)SqlSession
SqlSession 是一个会话,因为它不是线程安全的,不能在线程间共享。所以我们在
请求开始的时候创建一个 SqlSession 对象,在请求结束或者说方法执行完毕的时候要及
时关闭它(
一次请求或者操作中
)。
4)Mapper
Mapper(实际上是一个代理对象)是从 SqlSession 中获取的。
BlogMapper mapper = session.getMapper(BlogMapper.
class
);
它的作用是发送 SQL 来操作数据库的数据。它应该在一个 SqlSession 事务方法之
内。
最后总结如下:
对象
生命周期
SqlSessionFactoryBuiler
方法局部(
method
)
SqlSessionFactory
(单例)
应用级别(
application
)
SqlSession
请求和操作(
request/method
)
Mapper
方法(
method
)
这个就是我们在编程式的使用里面看到的四个对象的生命周期的总结