mybatis主要组件生命周期学习笔记

        SqlSessionFactoryBuilder 是利用xml文件或者Java编码获得资源来构建SqlSessionFactory,通过它可以构建多个SessionFactory。它的作用就是一个构建器。一旦完成构建它的任务也就结束了,所以应该要回收,所以它的生命周期只存在于方法的局部。

        SqlSessionFactory的作用就是创建SqlSession。而SqlSession就是一个会话,相当于JDBC中的Connection对象。每次应用程序访问数据库,都需要用SqlSessionFactory来创建一个SqlSession,所以SqlSessionFactory应该在Mybatis应用的整个生命周期中。如果多次创建同一个数据库的SqlSessionFactory。则每次创建SqlSessionFactory会打开更多的数据库链接资源,链接资源会很快耗尽。因此SqlSessionFactory的作用是唯一的,就是创建SqlSession,而且应该采用单例模式。

所以正确的做法是使得每一个数据库只对应一个SqlSessionFactory。

         SqlSession代表和数据库的一次会话;相当于JDBC的一个Connection对象,它的生命周期是在请求数据库处理事务的过程中,是一个线程不安全的对象,涉及多线程时要注意隔离的级别,每次创建用完必须关闭;长期存在会使得数据库链接池的活动资源减少。

         SqlSession和connection一样她都是非线程安全。每次使用都应该去获取新的对象。

         mapper是一个接口没有实现类,但是mybatis会为这个接口生成一个代理对象。它的作用就是发送SQL语句,然后返回我们需要的结果,或者执行SQL修改数据库的数据,因此它应该在一个SqlSession之内,由于难控性,当SqlSession销毁的时候它也会销毁。

          (将接口和xml进行绑定)
          EmployeeMapper empMapper =    sqlSession.getMapper(EmployeeMapper.class);
       两个重要的配置文件:
          mybatis的全局配置文件:包含数据库连接池信息,事务管理器信息等...系统运行环境信息
          sql映射文件:保存了每一个sql语句的映射信息:
                   

猜你喜欢

转载自blog.csdn.net/lzh_86/article/details/79871652