• 【Mybatis】Mybatis元素生命周期


    一、SqlSessionFactoryBuilder

    SqlSessionFactoryBuilder是利用XML或者Java编码获得资源来构建SqlSessionFactory的,通过它可以构建多个SessionFactory,他的作用就是一个构建器,一旦我们构建了SqlSessionFctory,它的作用就已经完结,是去了存在的意义,这时我们就该毫不犹豫的废弃它,将它回收,所以它的生命周期只存在于方法的局部,它的作用就是生成SqlSessionFactory对象。

    二、SqlSessionFactory

    SqlSessionFactory的作用是创建SqlSession,而SqlSession就是 一个会话,相当于JDBC中的Xonnection对象,每次应用程序需要访问数据库,我们就要通过SqlSessionFactory创建SqlSession,所以SqlSessionFactory应该在MyBatis应用的整个生命周期中,二如果我们多次创建同一个数据库的SqlSessionFactory,则每次创建SqlSessionFactory会打开更多的数据库连接资源,那么连接资源就很快会被耗尽。因此SqlSessionFactory的责任是唯一的,它的责任就是创建SqlSession,所以我们果断采用单例模式。如果我们采用多里,那么它对数据库连接的消耗是很大的,不利于我们统一的管理。所以正确的做法应是使得每一个数据库只能对应一个SqlSessionFactory,管理好数据库资源的分配,避免过多的Connection被消耗。

    三、SqlSession

    SqlSession是一个会话,相当于JDBC的一个Connection对象,它的生命周期应该是在请求数据库处理事务的过程中。它是一个线程不安全的对象,在涉及多线程的时候我们需要特别的当心,操作数据库需要注意其隔离级别,数据库锁等高级特性。此外,每次创建的SqlSession都必须及时关闭它,它长期存在就会使数据库连接池的活动资源减少,对系统性能的影响很大。

    四、Mapper

    Mapper是一个接口,而没有任何实现类,它的作用是发送SQL,然后返回我们需要的结果,或者执行SQL从而修改数据库的数据,因此它应该在一个SqlSession事务方法之内,是一个级别的东西,它就如同JDBC中的一条SQL语句的执行,它最大的范围和SqlSession是相同的,尽管我们想一直保存着Mapper,,但是你会发现它很难控制,所以尽量在一个SqlSession事务的方法中使用它们,然后废弃掉。

  • 相关阅读:
    leetcode 198. House Robber
    leetcode 35. Search Insert Position
    一文读懂机器学习,大数据/自然语言处理/算法全有了……
    成都Uber优步司机奖励政策(1月30日)
    北京Uber优步司机奖励政策(1月30日)
    滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(1月30日)
    成都Uber优步司机奖励政策(1月29日)
    北京Uber优步司机奖励政策(1月29日)
    滴滴快车奖励政策,高峰奖励,翻倍奖励,按成交率,指派单数分级(1月29日)
    成都Uber优步司机奖励政策(1月28日)
  • 原文地址:https://www.cnblogs.com/dream-to-pku/p/9099280.html
Copyright © 2020-2023  润新知