SqlSessionFactoryBuider对象
SqlSessionFactoryBuider对象可以被JVM虚拟机所实例化、使用或者销毁。一旦使用SqlSessionFactoryBuider创建SqlSessionFactory对象后,SqlSessionFactoryBuider类就不需要存在了,也就是说不需要保持此对象的状态,可以随意的任由JVM销毁。因此SqlSessionFactoryBuider对象的最佳适用范围是方法之内。
SqlSessionFactory对象
SqlSessionFactory对象有SqlSessionFactoryBuilder对象创建。一旦创建SqlSessionFactory类的实例,该实例在应用程序执行期间都存在,根本不需要每一次操作数据库时都重新创建他,所以应用它的最佳方式就是写一个单例模式,或使用Spirng框架来实现单例模式对SqlSessionFactory对象进行的管理。
SqlSession对象
SqlSession对象由SqlSessionFactory类创建,需要注意,每个线程都应该有自己的SqlSession实例。SqlSession的实例不能共享,它是线程不安全的,所以不能再Servlet中生命该对象的一个实例变量。因为Servlet是单例的,申明成实例会造成线程安全问题,也绝不能将SqlSession实例的对象放在一个类的静态字段甚至是实例字段中。还不可以将Sqlsession实例的对象放在任何类型的管理范围中,比如Servlet对象中的Httpsession会话。在接收到HTTP请求时,可以打开一个SqlSession对象操作数据库,然后返回响应,就可以关闭它。关闭SqlSession很重要,应该确保使用finally块来关闭它。