Mybatis-Sqlsession/Builder/Factory
2017-03-12 19:37
731 查看
SqlSessionFactoryBuilder
SqlsessionFactoryBuilder用于创建SqlsessionFactory,SqlsessionFactory一旦创建完成就不需要SqlSessionFactoryBuilder了,因为SqlSession是通过SqlSessionFactory生产,所以可以将SqlSessionFactoryBuilder当成一个工具类使用,最佳使用范围是方法范围即方法体内局部变量。SqlSessionFactory
SqlSessionFactory是一个接口,接口中定义了openSession的不同重载方法,SqlSessionFactory的最佳使用范围是整个应用运行期间,一旦创建后可以重复使用,通常以单例模式管理SqlSessionFactory。SqlSession
SqlSession是一个面向用户的接口, sqlSession中定义了数据库相关操作,默认使用DefaultSqlSession实现类。执行过程如下:
1、 加载数据源等配置信息
Environment environment = configuration.getEnvironment();
2、 创建数据库连接
3、 创建事务对象
4、 创建Executor,SqlSession所有操作都是通过Executor完成,mybatis源码如下:
if (ExecutorType.BATCH == executorType) {
executor = newBatchExecutor(this, transaction);
} elseif (ExecutorType.REUSE == executorType){
executor = new ReuseExecutor(this, transaction);
} else {
executor = new SimpleExecutor(this, transaction);
}
if (cacheEnabled) {
executor = newCachingExecutor(executor, autoCommit);
}
5、 SqlSession的实现类即DefaultSqlsession,此对象中对操作数据库实质上用的是Executor
结论:
每个线程都应该有它自己的SqlSession实例。SqlSession的实例不能共享使用,它也是线程不安全的。因此最佳的范围是请求或方法范围。绝对不能将SqlSession实例的引用放在一个类的静态字段或实例字段中。
打开一个SqlSession;使用完毕就要关闭它。通常把这个关闭操作放到 finally 块中以确保每次都能执行关闭。如下:
SqlSession session = sqlSessionFactory.openSession();
try {
// code
} finally {
session.close();
}
相关文章推荐
- Mybatis的SqlSessionFactoryBuilder/SqlSessionFactory/SqlSession生命周期总结
- mybatis开发dao实现类之SqlSession、SqlSessionFactory、SqlSessionFactoryBuilder的生命周期
- 3、关于利用SqlSessionFactoryBuilder去构建SqlSessionFactory,以及Mybatis的dao的实现
- MyBatis--SqlSessionFactoryBuilder,SqlSessionFactory,SqlSession作用域和生命周期
- myBatis源码之SqlSessionFactoryBuilder
- mybatis的探索过程之SqlSessionFactoryBuilder,SqlSessionFactory,SqlSession作用域和生命周期
- mybatis创建SqlSessionFactory
- MyBatis常用对象SqlSessionFactory和SqlSession介绍和运用
- Spring和Mybatis整合过程中遇到的Property 'sqlSessionFactory' or 'sqlSessionTemplate' are required的异常
- MyBatis源码解读(1)——SqlSessionFactory
- Mybatis源码分析(二)- SqlSessionFactory和SqlSession详解
- MyBatis中SQLSessionFactory和SqlSession的简介以及配置文件使用(二)
- SqlSessionFactoryBuilder 与 SqlSessionFactoryBean的区别
- MyBatis启动:SqlSessionFactory的建立过程
- Mybatis整合Spring SqlSessionFactoryBean的属性介绍
- mybatis 3.4.2 DefaultSqlSessionFactory与DefaultSqlSession
- Spring-mybatis整合配置错误,显示不能创建spring配置文件中的sqlSessionFactory的Bean
- MyBatis3 SqlSessionFactory
- 关于SqlSessionFactoryBuilder SqlSessionFactory SqlSession的作用范围
- mybatis源码一(SqlSessionFactory)