MyBatis 生命周期

  一.SqlSessionFactoryBuilder

    SqlSessionFactoryBuilder是利用XML或是Java编码获得资源来构建SqlSessionFactory的,通过他可以构建多个SessionFactory.他的作用就是构建器,一旦我们构建了SqlSessionFactory,他的作用就已经完结,就没有什么意义了我们就可以去回收了他,所以他的生命周期就是存在于方法的局部,他的作用就是就用来我们产生SqlSessionFactory;

  二.SqlSessionFactory

    SqlSessionFactory他的作用就是创建SqlSession,而SqlSession就是一个会话,相当于JDBC当中的Connection对象.每次访问数据库我们就是通过SqlSessionFactory来创建一个SqlSession,所以SqlSessionFactory应该是在整个应用的生命周期的,而如果我们多次创建同一个SqlSessionFactory,则每次创建SqlSessionFactory会打开更多的数据库连接资源,那么连接资源很快就会被耗尽.因此这里我们的SqlSessionFactory的责任是唯一的,他的责任就是创建SqlSession,所以在这里我们采用单例模式.所以如果是有多个数据库,那么最好的作法就是一个数据库只对应一个SqlSessionFactory;

  三.SqlSession

    SqlSession是一个会话,相当于JDBC当中的Connection对象.他的生命周期是请求数据库处理事务过程中.他是一个线程不安全的对象,需要特别的当心,操作数据库需要注意他其隔离级别,数据库锁等高级特性.此外在每次创建SqlSession都必须及时关闭,他如果长期存在就会使得数据库连接池活动资源减少,对系统的性能影响很大,所以在我们使用时需要添加一个finally{}并且在这里判断并关闭.他存活于一个应用请求和操作,可以执行多条SQL,保证事务的一至性.

  四.Mapper

    Mapper是一个接口,而没有任何的实现类,他的作用就是发送SQL,然后返回我们需要的结果,或者是执行SQL从而修改数据库数据,因此他应该是在一个SqlSession事务方法之中,是一个方法级别的东西.他就像JDBC当上的一条SQL语句的执行,他的最大范围和SqlSession是相同的,

原文地址:https://www.cnblogs.com/flay/p/10774218.html