本系列以Mybatis 3.3.X分支源码作为分析源,mybatis源码Git地址:https://github.com/mybatis/mybatis-3.git。
SqlSessionFactory 作为Mybatis的应用入口,主要提供了各种获取SqlSession实例的方法。SqlSessionFactory在大部分情况下,建议在系统中生成唯一实例(读写分离、多库连接等除外)。
SqlSession主要提供了常用的数据库增删查改操作。
一、 SqlSessionFactory类
SqlSessionFactory主要定义了几个重载的openSession方法,其主要实现为org.apache.ibatis.session.defaults.DefaultSqlSessionFactory。
首先描述下SqlSessionFactory的所有方法涉及到的参数:
boolean autoCommit:主要为connection.setAutoCommit(autoCommit)的参数,表示是否自动提交
Connection connection:数据库连接
TransactionIsolationLevel level:事务隔离级别,其为enum参数,主要定义了五种事务隔离级别与Connection中五种隔离级别一一对应。这里简要描述下各个级别的含义:
TransactionIsolationLevel.NONE 表示不支持事务
TransactionIsolationLevel.READ_UNCOMMITTED 表示可能发生脏读、不可重复读和幻读, 属于限制性最弱的隔离级别,并发性较高
TransactionIsolationLevel