mybatis的基本组成
1、SqlSessionFactoryBuilder
SqlSessionFactoryBuilder根据配置信息生成SqlSessionFactory。可以说它的作用就是一个构建器,一旦构建了SqlSessionFactory,它的作用就已经完结,失去了存在的意义。此时我们就应该废弃它,回收它,所以它的生命周期只存在于方法周期。
2、SqlSessionFactory
SqlSessionFactory生成SqlSession。SqlSessionFactory存在于mybatis整个生命周期。如果对同一数据库创建多个SqlSessionFactory,那么连接资源很快耗尽,也不利于代码的统一管理。SqlSessionFactory职责只是生成SqlSession,正确做法是每个数据库只对应一个SqlSessionFactory,管理好数据库资源的分配,避免过多Connection被消耗掉。
3、SqlSession
SqlSession用于发送sql并获取返回结果,或获取Mapper接口。一个SqlSession相当于jdbc的一个Connection对象,生命周期应当在请求数据库处理事务的过程中。它是个线程不安全对象,所以操作数据库需要注意隔离级别,数据库锁等高级特性。SqlSession都必须及时关闭,长期存在会使数据库连接池活动资源减少,对系统性能影响很大
4、Mapper
Mapper由Java接口和XML文件构成。定义sql和映射规则。它的生命周期应该在SqlSession事务方法之内,是一个方法级别的东西。
5、Configuration
配置数据库信息的xml文件保存到Configuration类对象中,这个对象存在于整个mybatis应用生命周期中。
小结:SqlSessionFactoryBuilde读取xml配置文件,创建SqlSessionFactory,对于数据库的请求SqlSessionFactory生成并分配SqlSession,通过持有SqlSession向数据库发送sql请求,而sql的定义和pojo和数据库表的映射由Mapper处理。