码迷,mamicode.com
首页 > 数据库 > 详细

SqlSessionFactory创建SqlSession的过程

时间:2017-09-13 20:14:21      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:cti   defaults   tran   contex   boolean   class   ror   open   environ   

SqlSessionFactory接口中声明了一系列opensession方法,用来返回SqlSession对象。

而DefaultSqlSessionFactory是他的实现类,实现了其中的方法。

如下:

  public SqlSession openSession() {
    return openSessionFromDataSource(configuration.getDefaultExecutorType(), null, false);
  }

 

其中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   

原文地址:http://www.cnblogs.com/neu-student/p/7517292.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!