• Mybatis中重要对象的生命周期


    序言

    MyBatis 里面的几个核心对象:SqlSessionFactoryBuiler、SqlSessionFactory、SqlSession 和 Mapper 对象。
    这几个核心对象在 MyBatis 的整个工作流程里面的不同环节发挥作用,如果说没有容器,那么何时产生何时销毁我们没有办法掌握。所以有必要通关一下这几个对象,在日后的工作中或许能得到一些启发。

    核心对象

    SqlSessionFactoryBuiler

    首 先 是 SqlSessionFactoryBuiler 。 它 是 用 来 构 建 SqlSessionFactory 的 , 而SqlSessionFactory 只需要一个,所以只要构建了这一个 SqlSessionFactory,它的使命就完成了,也就没有存在的意义了。所以它的生命周期只存在于方法的局部。

    SqlSessionFactory

    这个是不断产生sqlSession工厂的,所以它应该是存在于整个生命周期的。为了资源的反复利用和效率,所以SqlSessionFactory应该是单例模式的。

    SqlSession

    SqlSession 是一个会话,因为它不是线程安全的,不能在线程间共享。所以我们在请求开始的时候创建一个 SqlSession 对象,在请求结束或者说方法执行完毕的时候要及时关闭它(一次请求或者操作中)。

    Mapper

    是从会话中获得到的代理对象,它的作用是发送 SQL 来操作数据库的数据。它应该在一个 SqlSession 事务方法之内。

    结束

    那么核心对象的生命周期大体可以概括为:

    SqlSessionFactoryBuiler 方法局部(method)
    SqlSessionFactory(单例) 应用级别(application)
    SqlSession 请求和操作(request/method)
    Mapper 方法 (method)

  • 相关阅读:
    菜鸟、顺丰、京东物流:无“智”难行?
    小白开发程序的一天
    Linux服务器下搭建SFTP服务
    数据结构与算法复习:第三十六弹
    华为存储密码恢复
    java毕业设计病人追踪治疗信息系统mybatis+源码+调试部署+系统+数据库+lw
    vue3-3-响应式数据与watch属性
    Python Flask 离线环境的搭建
    java 基础 IO字符流
    linux 进程上下文
  • 原文地址:https://blog.csdn.net/weixin_45487988/article/details/127959035