时间:2021-07-01 10:21:17 帮助过:20人阅读
其中openSessionFromDataSource方法如下:
private SqlSession openSessionFromDataSource(ExecutorType execType, TransactionIsolationLevel level, boolean autoCommit) { Transaction tx = null; try { final Environment environment = configuration.getEnvironment(); final TransactionFactory transactionFactory = getTransactionFactoryFromEnvironment(environment); tx = transactionFactory.newTransaction(environment.getDataSource(), level, autoCommit); final Executor executor = configuration.newExecutor(tx, execType, autoCommit); return new DefaultSqlSession(configuration, executor); } catch (Exception e) { closeTransaction(tx); // may have fetched a connection so lets call close() throw ExceptionFactory.wrapException("Error opening session. Cause: " + e, e); } finally { ErrorContext.instance().reset(); } }
传入的第一个参数为configuration中执行器类型(有三种,SimpleExecutor,BatchExecutor,ReuseExecutor),第二个参数为事物管理等级,第三个是是否自动提交事物。
在方法中的操作:获取environment对象(全局xml文件中配置)
通过TransactionFactory工厂创建事物对象
创建Executor对象,需要传入事物对象、environment对象,以及autoCommit。
最后创建并返回SqlSession的实现类的对象,并将其需要的参数传入。
SqlSessionFactory创建SqlSession的过程
标签:cti defaults tran contex boolean class ror open environ