当前位置: 代码迷 >> 综合 >> mybatis的探索过程之SqlSessionFactoryBuilder,SqlSessionFactory,SqlSession作用域和生命周期
  详细解决方案

mybatis的探索过程之SqlSessionFactoryBuilder,SqlSessionFactory,SqlSession作用域和生命周期

热度:52   发布时间:2024-01-09 06:58:37.0

                               mybatis的探索过程之

   SqlSessionFactoryBuilder,SqlSessionFactory,SqlSession的

                             作用域和生命周期

SqlSessionFactoyBuilder

      SqlSessionFactoryBuilder这个类的作用就是为了创建SqlSessionFactory的,一旦SqlSessionFactory创建完毕,SqlSessionFactoryBuilder就没有存在的价值了,就应该被销毁。所以SqlSessionFactoryBuilder最好的作用域就是方法体内(及作为一个本地方法变量),用完即销毁。生命周期也就是调用方法的开始到结束

SqlSessionFactory

       SqlSessionFactory一旦被创建,就会存在于程序的整个生命周期,也就是只要程序不结束,它就会一直存在,你不会去主动销毁它,因为干嘛要销毁它呢?所以,我们要做的就是不要重复的去创建SqlSessionFactory!单例模式很适合这种情况!

SqlSession

       SqlSession实例是不能共享的,并且不是现程安全的,所以它的最好的作用域应该是方法体内,或者是一次请求时,即method或者request,也就是说再收到一次Http请求时,就应该创建一次一个SqlSession实例,那么也就是

说在每次使用完之后我们都需要把它关闭,即调用.close();

        代码如下:

      

    综上所述,为了解决这些问题我们为SqlSessionFactory建立单例模式

    

         这样就解决了SqlSessionFactory的单一问题,还用SqlSessionFactoryBuilder的即用即销毁的问题

          剩下的就是在调用玩SqlSession之后将其销毁就好了

         

好啦,说到这里吧,欢迎留言指错!


  相关解决方案